数据库返回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;
编辑:
解决问题后,下面的代码现在正在工作,并显示正确的行数作为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;
答案 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);