0

尽管数据库中有记录,但数据库返回 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)

这是另一个类中用于调用 fetchPlacesCount 方法的 onclick

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

编辑:

解决问题后,下面的代码现在可以正常工作,并将正确的行数显示为 Toast 消息,因此现在解决了一个问题,还有一个问题要解决,但 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;
4

2 回答 2

0

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

于 2013-01-24T10:31:26.553 回答
0

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

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

编辑:

触发您的查询,如下所示:

光标 c = ourDatabase.rawQuery("SELECT COUNT(*) from " + DATABASE_TABLE, null);

于 2013-01-24T10:34:32.957 回答