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

Dav*_*vid 51 sqlite android row count

如何使用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;
}    
Run Code Online (Sandbox Code Playgroud)

mic*_*elg 105

Cursor.getCount()

  • 我不知道这对你当前的实现是如何工作的,但如果你只是将count(*)改为*,这应该可行. (4认同)
  • 我认为最好的解决方案`return(int)DatabaseUtils.longForQuery(mDB,"SELECT COUNT(*)FROM table_name",null);` (3认同)

Pra*_*lur 7

cursor.moveToNext();
cursor.getCount();
Run Code Online (Sandbox Code Playgroud)

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


Pra*_*ani 6

这会更有效,因为适用于所有版本:

int numRows = DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM table_name", null);
Run Code Online (Sandbox Code Playgroud)

或者

int numRows = DatabaseUtils.queryNumEntries(db, "table_name");
Run Code Online (Sandbox Code Playgroud)

或者如果您想获得特定选择的行数,那么您应该使用(在 API 11 中添加)

public static long queryNumEntries (SQLiteDatabase db, String table, String selection)
Run Code Online (Sandbox Code Playgroud)

谢谢 :)