Tengo una tabla de SQL que se crea mediante el siguiente código:Cómo probar si el cursor está vacía en una consulta SQLiteDatabase
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);");
}
que consultar la tabla de la siguiente manera:
String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
+ " GROUP BY " + SUBJECT + ";";
Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);
El problema es necesario iniciar una Actividad A si el cursor está vacío (es decir, la tabla no almacena ningún valor) y la Actividad B si el cursor no está vacío (es decir, la tabla está llena).
No puedo encontrar un método que pueda decirme si la tabla está vacía o no. he tratado de ocasión: Sierra de la siguiente manera:
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));
}
}
Sin embargo, el registro muestra 1, si la tabla está vacía ... y otra vez 1, si la tabla tiene 1 entrada .... se nota 2, si la tabla tiene dos entradas, etc.
¿Puede sugerir algún método para resolver mi problema de iniciar diferentes actividades en función de si el cursor está vacío o no?
No he probado exactamente la forma en que usted lo mencionó. Pero he intentado usar cursor = null , así, de la siguiente manera:! Log.d (! "Eventos", Boolean.toString (cursor = null)); Lo interesante es que Log se muestra verdadero si la tabla tiene algunos valores, pero sorprendentemente el registro no se muestra en absoluto si la tabla está vacía. Estoy confundido, ¿qué significa eso? –
No olvide mover el puntero del cursor al primer registro con 'cursor.moveToFirst()' antes de probar –
Significa que su consulta arroja cero filas. Lo que significa que el cursor no es nulo, pero tiene cero filas: D –