如何获取Android中使用SQLite查询的行数?

如何获取Android中使用SQLite查询的行数? 看来我的以下方法不起作用。

public int getFragmentCountByMixId(int mixId) { int count = 0; SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); Cursor cursor = db.rawQuery( "select count(*) from downloadedFragement where mixId=?", new String[]{String.valueOf(mixId)}); while(cursor.moveToFirst()){ count = cursor.getInt(0); } return count; } 

Cursor.getCount()

 cursor.moveToNext(); cursor.getCount(); 

如果未调用moveToNext(),则可能会出现cursorIndexOutOfBoundException。

这将是更有效的,因为所有版本的工作:

 int numRows = DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM table_name", null); 

要么

 int numRows = DatabaseUtils.queryNumEntries(db, "table_name"); 

或者如果你想获得特定select的行数,那么你应该去(在API 11中添加)

 public static long queryNumEntries (SQLiteDatabase db, String table, String selection) 

谢谢 :)

查询表中的_ID列,然后在游标上调用getCount。 这是我在我的一个项目中做的一个链接 。 看行号110。

DatabaseUtils

 public static long queryNumEntries(SQLiteDatabase db, String table) 

使用String而不是int

 String strCount = ""; int count = 0; SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); Cursor cursor = db.rawQuery( "select count(*) from downloadedFragement where mixId=?", new String[]{String.valueOf(mixId)}); while(cursor.moveToFirst()){ strCount = cursor.getString(cursor.getColumnIndex("COUNT(*)")); } count = Integer.valueOf(strCount).intValue();