Compruebe si el cursor tiene resultados
Estoy utilizando una base de datos para almacenar la fecha y quiero una sola columna devuelta basada en que id se da en el donde claus.
public String getPmax(String serial) { String[] columns = new String[]{KEY_SERIAL, KEY_PMAX}; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = " + serial, null, null, null, null); String result = "nothing found"; if(c != null) { int iPmax = c.getColumnIndex(KEY_PMAX); c.moveToFirst(); result = c.getString(iPmax); } return result; }
Este código funciona si utilizo una serie que está en la base de datos, pero me da una fuerza cerca cuando estoy usando una serie que no está en la base de datos!
- Obteniendo un valor único de SQLite en android
- Ciclo de vida de la base de datos Sqlite? ¿Se elimina cuando se cierra la aplicación?
- ¿Cómo implementar consultas complejas utilizando un proveedor de contenido?
- ¿Cómo conectarse a SQLite DB con contraseña con OrmLite?
- Android: SQLite usando base de datos incorrecta
dice:
04-11 16:31:19.423: E/AndroidRuntime(21226): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.janjanus.solardetect/nl.janjanus.solardetect.DatabaseView}: android.database.sqlite.SQLiteException: no such column: g: , while compiling: SELECT serial, pmax FROM SolareCel WHERE serial = g
Así que mi pregunta es: ¿Cómo puedo comprobar si hay resultado? O tengo que comprobar si la serie dada es una serie que está en la base de datos?
- Consulta sqlite de Android para que coincida con la columna que contiene el texto
- Citas simples en sqlite en android
- Estrategia de clave principal de Android (aplicación distribuida)
- Utilización de la base de datos legible y escrita de SQLite
- Archivo JSON VS SQLite android
- ¿Podemos actualizar el APK en Google Play Store sin cambiar la versión de APP
- Cómo convertir la matriz de bytes en Bitmap
- ¿Tengo que usar _ID como una clave primaria de SQlite? Y tiene que ser un INT? (Android Dev)
if (!(mCursor.moveToFirst()) || mCursor.getCount() ==0){ //cursor is empty }
Si se mira de cerca, el error es que el SQL es defectuoso. Lee el g
como una columna. Tienes que encerrarlo en apóstrofes como 'g'
.
En su caso, la línea donde se obtiene el cursor debe ser:
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = '" + serial + "'", null, null, null, null);
En cuanto a comprobar si el cursor no tiene resultados, mira la respuesta de Samir Mangroliya.
Puede comprobar si el cursor tiene elementos:
boolean isEmpty = cursor.getCount() < 1;
AFAIK, el Cursor nunca devuelve null cuando no hay ninguna fila que las condiciones solicitadas, acaba de devolver un Cursor vacío.
int x = cursor.getCount(); //this will return number of records in current cursor if ( x == 0 ) { // there are no records } else { // do your stuff }