SELECT count(*)FROM表上的Android SQLite Cursor超出范围异常
问题内容:
下面的函数给了我一个超出范围的异常…
public void count(){
SQLiteDatabase db = table.getWritableDatabase();
String count = "SELECT count(*) FROM table";
Cursor mcursor = db.rawQuery(count, null);
int icount = mcursor.getInt(0);
System.out.println("NUMBER IN DB: " + icount);
}
它的目的是返回数据库中的行数。有人知道怎么了吗?我是否可能以错误的方式执行此任务?
问题答案:
你错过了
mcursor.moveToFirst();
public void count(){
SQLiteDatabase db = table.getWritableDatabase();
String count = "SELECT count(*) FROM table";
Cursor mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int icount = mcursor.getInt(0);
System.out.println("NUMBER IN DB: " + icount);
}
但是您应该为此任务使用更好的方法,例如DatabaseUtils的内置帮助器。
如
public long count() {
return DatabaseUtils.queryNumEntries(db,'tablename');
}
DatabaseUtils.longForQuery()
当您在何处查询总计数时,使用第一列长值可能会有所帮助。它更简单,您不需要使用Cursor进行大量工作。