2011-04-28 36 views
9

Quiero obtener una fila específica por id en android sqlite y he escrito el siguiente código, pero no devuelve ningún registro. He escrito un método getAllRecords() que devuelve todos los registros de la base de datos.Android Seleccionar fila por Id en Sqlite?

¿Alguien puede explicar el error que estoy cometiendo?

public Bank getBankById(int bankId) 
    { 

     Cursor cursor=null; 
     Bank bnk = null; 
     cursor = this.db.rawQuery("select * from " + BanksTable.NAME + " where " + BanksTable.COL_ID + "=" + bankId , null); 
     if (cursor != null) 
      { 
      if (cursor.moveToFirst()) 
       { 
      int id = cursor.getInt(cursor.getColumnIndex(BanksTable.COL_ID)); 
      String name = cursor.getString(cursor.getColumnIndex(BanksTable.COL_NAME)); 
      String url = cursor.getString(cursor.getColumnIndex(BanksTable.COL_IMAGE_URL)); 
      byte[] image = cursor.getBlob(cursor.getColumnIndex(BanksTable.COL_IMAGE)); 
      bnk=new Bank(); 
      bnk.setId(id); 
      bnk.setImageURL(url); 
      bnk.setName(name); 
      bnk.setImageByteArray(image); 
       } 
      cursor.close(); 
      } 
     return bnk; 

    } 
+0

se puede conseguir cualquier excepción en su Logcat? –

+0

¿dónde está BanksTable.COL_ID y la definición de la tabla? – Selvin

+0

db.execSQL ("CREATE TABLE IF NO EXISTE" + BanksTable.NAME + "(" \t \t \t \t + BanksTable.COL_ID +" KEY número entero PRIMARIA, "+ \t \t \t \t BanksTable.COL_NAME +" varchar" + \t \t \t \t BanksTable.COL_IMAGE_URL + "varchar," + \t \t \t \t BanksTable.COL_IMAGE + "blob);"); – UMAR

Respuesta

9

Terminé este problema cambiando el parámetro a nombre. es extraño, pero todavía no sé por qué no estaba funcionando.

Estaba obteniendo el número de identificación bancaria como 0,1,2,3,4 puede no estar permitido en sqlite o afectarlo internamente, pero aún no estoy seguro.

cursor = this.db.rawQuery("select * from " + BanksTable.NAME + " where " + BanksTable.COL_NAME + "='" + bankName + "'" , null); 
+1

o use el método trim() para insertar/obtener registros. – UMAR

0

resuelvo este problema agregando propiedad "incremento automático" para la identificación, cuando se crea la tabla

db.execSQL("CREATE TABLE IF NOT EXISTS " + BanksTable.NAME +" (" +BanksTable.COL_ID + " 
integer PRIMARY KEY **autoincrement**, "+ BanksTable.COL_NAME + " varchar, " + 
BanksTable.COL_IMAGE_URL + " varchar," + BanksTable.COL_IMAGE + " blob);"); 
Cuestiones relacionadas