2010-07-17 4 views
11

Je voudrais limiter les résultats à ceux dont KEY_HOMEID est égal à journalId. J'ai été sur ce pendant quelques jours toute aide serait appréciée.comment ajouter la clause WHERE à la requête sur android

public Cursor fetchAllNotes(String journalId) { return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_HEIGHT, KEY_BODY, KEY_HOMEID},"FROM DATABASE_TABLE WHERE KEY_HOMEID = journalId",null, null, null, null,null); }

Répondre

24

Jetez un oeil à http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

Votre requête devrait ressembler un peu comme ceci:

mDb.query(DATABASE_TABLE, // Table name 
      columnNames, // String[] containing your column names 
      KEY_HOMEID+" = "+jounalId, // your where statement, you do not include the WHERE or the FROM DATABASE_TABLE parts of the query, 
      null, 
      null, 
      null, 
      null 
     ); 

Si vous vous sentez plus à l'aise écrire des requêtes SQL, vous pouvez également utiliser:

mDb.rawQuery("SQL STATEMENT", null); 
+0

Merci. Travaux. Je ne me suis pas rendu compte que SQL Statment ne pouvait être utilisé dans rawQUery. – Brian

+0

Voir aussi ma réponse à votre question précédente (à peu près identique) :) http://stackoverflow.com/questions/3269863/sqlite-and-android-how-do-i-use-string-having-in-my -query/3271769 # 3271769 –

+1

évitez 'rawQuery' si possible – user2070775

2

Je cherchais une réponse à mon problème ici aussi.

Il s'est avéré que j'ai essayé d'avoir une chaîne au lieu d'un entier. Ma solution était de le faire comme ça: 'String' au lieu de Integer.

Voici le code qui a fonctionné pour moi à la fin:

return db.query(TABLE_NAME_REMINDER, PROJECTION, REMINDER_REMINDER_TYPE+" = '"+rem_type+"'", null, null, null, null); 
6

Il rend votre code plus clair si vous allez l'utiliser où des arguments (dans les paramètres de la requête) Exemple:

 String [] settingsProjection = { 
       DBContract.Settings._ID, 
       DBContract.Settings.COLUMN_NAME_USER_ID, 
       DBContract.Settings.COLUMN_NAME_AUTO_LOGIN 
     }; 

     String whereClause = DBContract.Settings.COLUMN_NAME_USER_ID+"=?"; 
     String [] whereArgs = {userId.toString()}; 

     Cursor c = db.query(
       DBContract.Settings.TABLE_NAME, 
       settingsProjection, 
       whereClause, 
       whereArgs, 
       null, 
       null, 
       null 
     ); 
+0

Je ne pouvais pas utiliser 'userId.toString()' à la place j'ai utilisé 'Integer.toString (userId)' –

Questions connexes