So testen Sie, ob der Cursor in einer SQLiteDatabase-Abfrage leer ist

Ich habe eine SQL Tabelle, die erstellt wird, indem Sie den folgenden code:

public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + SUBJECT
        + " TEXT NOT NULL," + TOPIC + " TEXT NOT NULL, "
        + LECTURENUMBER + " TEXT NOT NULL, " + PAGENUMBER
        + " TEXT NOT NULL, " + DATE + " TEXT NOT NULL, " + _DATA
        + " TEXT NOT NULL);");
}

Ich die Abfrage der Tabelle wie folgt:

String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
    + " GROUP BY " + SUBJECT + ";";

Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);

Das problem ist, ich habe zum starten Eine Aktivität, wenn Sie den cursor leer ist(d.h. die Tabelle speichert keine Werte) und der Aktivität B, wenn der cursor nicht leer ist(d.h. eine Tabelle gefüllt ist).

Ich bin nicht in der Lage, eine Methode zu finden, die mir sagen kann, ob die Tabelle leer ist oder nicht.
Ich Habe versucht, die Verwendung der Log wie folgt:

private void showSubjectsOnList() {
    String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
        + " GROUP BY " + SUBJECT + ";";

    Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);

    Log.d("Events",Integer.toString(cursor.getCount()));
    if(cursor.isNull(0)!=false){
        cursor.close();
        subjects.close();
        startActivity(new Intent(this,OpenScreen.class));
    }
}

Aber das LOG zeigt 1, wenn die Tabelle leer ist...und wieder 1, wenn Tabelle enthält 1 Eintrag....es zeigt 2, wenn die Tabelle hat zwei Einträge, und so weiter.

Können Sie schlagen einige Verfahren zur Lösung von meinem problem, starten verschiedene Aktivitäten, basierend auf cursor leer ist oder nicht.

InformationsquelleAutor der Frage Waneya Iqbal | 2011-08-28

Schreibe einen Kommentar