web-dev-qa-db-ja.com

SQLiteを使用してAndroidでクエリの行数を取得する方法は?

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;
}    
51
David
105
michaelg
cursor.moveToNext();
cursor.getCount();

MoveToNext()が呼び出されない場合、cursorIndexOutOfBoundExceptionが発生する可能性があります。

7
Pramod Setlur

すべてのバージョンで動作するため、これはより効率的です。

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)

ありがとう:)

intの代わりにStringを使用します

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();
1
LK Yeung

テーブルの_ID列を照会し、カーソルでgetCountを呼び出します。 link 私のプロジェクトの1つでやっています。行番号110を見てください。

0
Gopal
val query = "SELECT * FROM $TABLE_NAME ;"
val result = db.rawQuery(query,null)
Toast.makeText(ctx,result.count,Toast.LENGTH_SHORT).show()
0
Stan

DatabaseUtils

public static long queryNumEntries(SQLiteDatabase db, String table)
0
James Wierzba
 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);
}
0
Rohit