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