2010-07-17 3 views
11

Vorrei limitare i risultati a quelli il cui KEY_HOMEID è uguale a journalId. Sono stato su questo per un paio di giorni ogni aiuto sarebbe apprezzato.come aggiungere la clausola WHERE a Query su 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); }

risposta

24

Dai un'occhiata alla http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

Vostri criteri dovrebbe apparire un po 'come questo:

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 
     ); 

Se ti senti query SQL di scrittura più comoda è anche possibile utilizzare:

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

Grazie. Lavori. Non mi ero reso conto che la statistica SQL poteva essere usata solo in rawQUery. – Brian

+0

Vedere anche la mia risposta alla domanda precedente (praticamente identica) :) http://stackoverflow.com/questions/3269863/sqlite-and-android-how-do-i-use-string-having-in-my -query/3271769 # 3271769 –

+1

si prega di evitare 'rawQuery' quando possibile – user2070775

2

Anche io cercavo una risposta al mio problema.

Si è scoperto che ho provato ad avere una stringa invece di un intero. La mia soluzione era di farlo così: 'String' invece di Integer.

Qui è il codice che ha funzionato per me alla fine:

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

rende il codice più chiaro se lo userete in cui argomenti (a parametri di query) Esempio:

 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

Non ho potuto usare 'userId.toString()' invece ho usato 'Integer.toString (userId)' –