如何使用SQLite获取Android中查询的行数?似乎我的以下方法不起作用。
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;
}
答案 0 :(得分:103)
答案 1 :(得分:7)
cursor.moveToNext();
cursor.getCount();
如果未调用moveToNext(),则可能出现cursorIndexOutOfBoundException。
答案 2 :(得分:3)
这会更有效,因为适用于所有版本:
int numRows = DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM table_name", null);
或强>
int numRows = DatabaseUtils.queryNumEntries(db, "table_name");
或如果您想获得特定选择的行数,那么您应该使用(在API 11中添加)
public static long queryNumEntries (SQLiteDatabase db, String table, String selection)
谢谢:)
答案 3 :(得分:1)
使用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();
答案 4 :(得分:0)
查询表中的_ID列,然后在游标上调用getCount。这是我在我的一个项目中做的link。看看第110行。
答案 5 :(得分:0)
在DatabaseUtils
public static long queryNumEntries(SQLiteDatabase db, String table)
答案 6 :(得分:0)
public long getRecords() {
return DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM contacts", null);
}
您可以将其用作方法,如果数据库使用自动增量,则可以使用
public long getRecords() {
return DatabaseUtils.longForQuery(db, "SELECT seq FROM sqlite_sequence", null);
}
答案 7 :(得分:0)
val query = "SELECT * FROM $TABLE_NAME ;"
val result = db.rawQuery(query,null)
Toast.makeText(ctx,result.count,Toast.LENGTH_SHORT).show()