以下函数给了我一个超出范围的例外...
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一起工作.