Ho una tabella SQL che viene creato dal seguente codice:Come per verificare se il cursore è vuota in una SQLiteDatabase query
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);");
}
interrogo la tabella come segue:
String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
+ " GROUP BY " + SUBJECT + ";";
Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);
Il problema è necessario avviare un'attività A se il cursore è vuoto (ovvero la tabella non memorizza valori) e Attività B se il cursore non è vuoto (cioè la tabella è piena).
Non riesco a trovare un metodo che possa dirmi se il tavolo è vuoto o meno. Ho cercato di usato registro come segue:
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));
}
}
Ma il registro mostra 1, se la tabella è vuota ... e di nuovo 1, se la tabella ha 1 ingresso .... si vede 2, se la tabella ha due voci e così via.
Potete suggerire qualche metodo per risolvere il mio problema di iniziare diverse attività in base a se il cursore è vuoto o meno.
Non ho provato esattamente come hai menzionato. Ma ho provato ad utilizzare cursore = null così, nel modo seguente:! Log.d (! "Eventi", Boolean.toString (cursore = null)); La cosa interessante è che Log mostra true se la tabella ha alcuni valori, ma sorprendentemente il log non viene mostrato affatto se la tabella è vuota. Sono confuso cosa significa questo. –
Non dimenticare di spostare il puntatore del cursore sul primo record con 'cursor.moveToFirst()' prima di provare –
Significa che la tua query restituisce zero righe. Il che significa che il cursore non è nullo ma ha zero righe: D –