web-dev-qa-db-fra.com

Comment obtenir le nombre de lignes d'une requête dans Android avec SQLite?

Comment obtenir le nombre de lignes d'une requête dans Android à l'aide de SQLite? Il semble que ma méthode suivante ne fonctionne pas.

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

Si moveToNext () n'est pas appelé, l'exception cursorIndexOutOfBoundException peut survenir.

7
Pramod Setlur

Ce serait plus efficace car fonctionne pour toutes les versions:

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

ou

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

ou si vous voulez obtenir le nombre de lignes dont selection alors vous devriez aller avec (ajouté dans API 11)

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

Merci :)

3
Pratik Butani

Interrogez la colonne _ID dans la table, puis appelez getCount sur le curseur. Voici un link je fais dans un de mes projets. Regardez la ligne numéro 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

utilisez String au lieu de 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();
0
LK Yeung

Dans DatabaseUtils

public static long queryNumEntries(SQLiteDatabase db, String table)
0
James Wierzba
 public long getRecords() {
    return DatabaseUtils.longForQuery(db, "SELECT COUNT(*) FROM contacts", null);
}

Vous pouvez utiliser ceci comme méthode ou si votre base de données utilise l'incrémentation automatique

 public long getRecords() {
    return DatabaseUtils.longForQuery(db, "SELECT seq FROM sqlite_sequence", null);
}
0
Rohit