2015-04-02 3 views
1

Ceci est mon code:Utilisation de la base de données SQLite WHERE Clause dans Android?

public int getIdMotChuDe(String tenChuDe) { 
      int IDChuDe = 0; 
      try 
      { 
       Cursor c = null; 
       c = database.rawQuery(
        "SELECT ChuDeID FROM DanhSachChuDe WHERE TenChuDe = ?" 
        , new String[] {tenChuDe}); 
       c.moveToFirst(); 
       IDChuDe = c.getInt(c.getColumnIndex("ChuDeID")); 
       c.close(); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
      return IDChuDe; 
     } 

J'essaie d'obtenir ChuDeID de DanhSachChuDe table avec condition dans la clause WHERE. Mais je ne sais pas pourquoi cette fonction retourne toujours 0. Aidez-moi s'il vous plaît. Merci! Désolé parce que mon anglais.

+0

avez-vous 'close()' 'votre database' ailleurs, avant d'utiliser sa' rawQuery'? –

+2

vérifier le contenu de votre LogCat –

+1

Déboguez la méthode à laquelle il renvoie 0 car vous l'avez initialisé à 0. Vérifiez les noms de colonne et vérifiez qu'il existe des valeurs dans la base de données pour cette colonne – Keshav1234

Répondre

0

Cela peut être dû au fait qu'un Exception est en train d'être lancé. Le code que vous utilisez ne vérifie pas correctement l'état de votre Cursor - il tente de moveToFirst() avant toute vérification pour voir si l'objet n'est pas null. Votre code suppose également un résultat retourné. C'est une mauvaise pratique, et devrait être évitée. Une solution beaucoup plus sûre et plus commune est la suivante:

if (cursor != null) { 
    // If the cursor has results, move the cursor to first row 
    if (cursor.moveToFirst()) { 
     do { 
      // YOUR METHODS HERE 
      // then move to next row 
     } while (cursor.moveToNext()); 
    } 
} 
+1

'rawQuery()' * never * retourne 'null'. –

+0

Bonjour Ed.Merci pour rep. J'essaie de changer ma fonction, suivez votre code. mais ce n'est pas le travail. – Hades10

+0

Avez-vous vérifié votre LogCat pour voir si une exception est levée? –