2012-01-30 12 views
15

Aquí está mi código de SQLite actual:consulta androide SQLite con múltiples donde

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + 
       " where " + KEY_ownerID + " = ? ", new String[] { ownerID}); 

Funciona bien, pero cuando traté de añadir múltiples que estén a algo como esto:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + TABLE_RECIPE_NAME + 
       " where " + KEY_ownerID + " = ?, " + KEY_partnerID + " = ?, " + KEY_advertiserID + " = ?, " + KEY_chefID + " = ?", new String[] { ownerID, partnerID, advertiserID, chefID }); 

Se devuelve un error. Entonces, ¿cómo trato con múltiples?

Respuesta

36

cambio consulta a:

Cursor c = sqlDatabase.rawQuery("select docid as _id, recipeID from " + 
TABLE_RECIPE_NAME + " where " + KEY_ownerID + " = ? AND " + KEY_partnerID + 
" = ? AND " + KEY_advertiserID + " = ? AND " + KEY_chefID + " = ?", 
new String[] { ownerID, partnerID, advertiserID, chefID }); 
1

Probablemente usted tiene que utilizar AND. Desea una consulta que devuelva el valor en Cursor rellenado con la comparación de varios valores. Entonces, solo necesita usar AND. En lugar de usar un comma(,). La respuesta anterior parece correcta, pero carece de la explicación.

0

Utilice AND y OR para obtener múltiples WHERE cláusulas. Use paréntesis si se necesita agrupación lógica u orden.

SELECT * 
FROM employees 
WHERE (last_name = 'Smith' AND first_name = 'Jane') OR (employee_id = 1); 

(source)

Nota

  • Esta respuesta suplementaria omite el código de Android formatear porque hace que el SQL difícil de leer y entender. El lector puede hacer su propio formateo.
2

que está haciendo correcto, pero sólo tiene que utilizar Y o O entre cada palabra clave en el estado como por su exigencia. Intenta usar esto una vez.

Cuestiones relacionadas