尽管数据库中存在行,但数据库查询仍会为count返回null

时间:2013-01-24 10:28:42

标签: android database sqlite

尽管数据库中有记录,但

数据库返回null

     private static final String DATABASE_NAME="PlayGamesdb";
     private static final String DATABASE_TABLE="peopleTable";

   public int fetchPlacesCount() {
        int count = 0;
        //String[] columns = new String[] {KEY_ROWID, KEY_NAME, KEY_HITS };
        Cursor c = ourDatabase.rawQuery("SELECT COUNT(*) from DATABASE_TABLE", null);
        c.moveToFirst();
        count = c.getInt(0);    
        return count;
    }

关于什么是错的任何想法?

01-24 19:30:23.050: E/AndroidRuntime(1761): FATAL EXCEPTION: main
01-24 19:30:23.050: E/AndroidRuntime(1761): java.lang.NullPointerException
01-24 19:30:23.050: E/AndroidRuntime(1761):     at com.example.dbsample.PlayGame.fetchPlacesCount(PlayGame.java:93)
01-24 19:30:23.050: E/AndroidRuntime(1761):     at com.example.dbsample.SQLiteExample.onClick(SQLiteExample.java:123)
01-24 19:30:23.050: E/AndroidRuntime(1761):     at android.view.View.performClick(View.java:3511)

这是onclick,在另一个类中用来调用fetchPlacesCount方法

 case R.id.bSQLnumberofrows:
        int x = 0;
        PlayGame ec = new PlayGame(this);
        ec.open();
        x = ec.fetchPlacesCount();
        ec.close();
        sqlRow.setText(x);
        break;

编辑:

解决问题后,下面的代码现在正在工作,并显示正确的行数作为Toa​​st消息,所以现在修复了一个问题,还有一个问题,使用setText方法仍然错误,将数字放在EditText中。这就是我接下来要做的工作,看看这个textView有什么问题。

使用Toast消息是找出该方法返回正确数字的好方法。

public int fetchPlacesCount() {
        int count = 0;
        Cursor q = ourDatabase.rawQuery("SELECT COUNT(*) from " + DATABASE_TABLE, null);
        q.moveToFirst();
       count = q.getInt(0);
        return count;
    }

在另一个班级

    case R.id.bSQLnumberofrows:
        PlayGame ec = new PlayGame(this);
        ec.open();
        int x = ec.fetchPlacesCount();
        ec.close();
      //  sqlRow.setText(x);
        Toast.makeText(SQLiteExample.this, "value of x " + x , Toast.LENGTH_SHORT).show();
        break;

2 个答案:

答案 0 :(得分:0)

c.getCount()将为您提供所需的计数。

答案 1 :(得分:0)

我认为您应该返回cont变量而不是count,因为您没有为count变量赋值。

int cont = c.getInt(0); 
    return cont;

<强>编辑:

按如下方式触发查询:

  

Cursor c = ourDatabase.rawQuery(“SELECT COUNT(*)from”+ DATABASE_TABLE,null);