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

时间:2011-06-15 00:06:06

标签: android sqlite count row

如何使用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;
}    

8 个答案:

答案 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()