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!

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?

  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 } 
  • Eliminar todas las filas de tabla de la tabla de base de datos SQLite
  • Multiple OrderBy en el método SQLiteDatabase.Query
  • Cómo abrir / cerrar SQLite db en Android correctamente
  • Cómo imprimir la consulta ejecutada por el método query () de android
  • SQLite Android asignación de la ventana de cursor de 2048 kb falló
  • Cómo utilizar la conexión SQLite desde la carpeta de activos
  • ¿Preguntas con declaraciones preparadas en Android?
  • La columna _id no existe
  • ¿Cómo puedo devolver un registro basado sólo en una coincidencia parcial de ese registro?
  • Insertar matriz en la base de datos SQLite en android
  • ¿Es seguro almacenar nombre de usuario y contraseñas en un SQLite local db en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.