2010-07-17 10 views
11

Me gustaría limitar los resultados a aquellos cuyo KEY_HOMEID es igual a journalId. He estado en esto por un par de días, cualquier ayuda sería apreciada.cómo agregar cláusula WHERE a Query en 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); }

Respuesta

24

Tenga una mirada en http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

Su consulta debe buscar un poco como esto:

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 se siente más cómodo consultas SQL de escritura también se puede utilizar:

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

Gracias. Trabajos. No me di cuenta de que la declaración de SQL solo podía usarse en cuartas cuates. – Brian

+0

Vea también mi respuesta en su pregunta anterior (más o menos idéntica) :) http://stackoverflow.com/questions/3269863/sqlite-and-android-how-do-i-use-string-having-inmy -query/3271769 # 3271769 –

+1

por favor, evite 'rawQuery' cuando sea posible – user2070775

2

Estaba buscando una respuesta a mi problema aquí también.

Resultó que traté de tener una Cadena en lugar de un Entero. Mi solución fue hacerlo así: 'Cadena' en lugar de Entero.

Este es el código que funcionó para mí en el final:

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

Esto hace que el código sea más claro si lo vas a usar en argumentos (en los parámetros de consulta) Ejemplo:

 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

No pude usar 'userId.toString()' en su lugar, utilicé 'Integer.toString (userId)' –

Cuestiones relacionadas