2011-04-28 5 views
9

Je veux obtenir une ligne spécifique par id dans android sqlite et ai écrit le code suivant, mais il ne retourne aucun enregistrement. J'ai écrit une méthode getAllRecords() qui retourne tous les enregistrements de la base de données. Est-ce que quelqu'un peut expliquer l'erreur que je commets?Android Sélectionnez une ligne par Id dans Sqlite?

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

vous obtenez des exceptions dans votre logcat? –

+0

où est BanksTable.COL_ID et la définition de la table? – Selvin

+0

db.execSQL ("CREATE TABLE SINON EXISTE" + BanksTable.NAME + "(" \t \t \t \t + BanksTable.COL_ID +" integer PRIMARY KEY, "+ \t \t \t \t BanksTable.COL_NAME +" varchar" + \t \t \t \t BanksTable.COL_IMAGE_URL + "varchar", "blob);" + \t \t \t \t BanksTable.COL_IMAGE +); – UMAR

Répondre

9

J'ai résolu ce problème en modifiant le nom du paramètre. c'est bizarre mais je ne sais toujours pas pourquoi ça ne fonctionnait pas.

Je recevais l'ID de banque comme 0,1,2,3,4 peut-être qu'il n'est pas autorisé en sqlite ou en effectuant en interne, mais je ne suis pas sûr.

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

ou utilisez la méthode trim() pour insérer/obtenir des enregistrements. – UMAR

0

-je résoudre ce problème en ajoutant la propriété "autoincrement" à id, lors de la création tableau

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);"); 
Questions connexes