2010-11-24 18 views
7

estoy recibiendo un error molesto al intentar consultar algunos datos en SQLitecláusula WHERE en SQLite que no trabajan en Android :(

Aquí está mi código:

Cursor cursor= db.query(TABLE_IMAGES, new String[]{"_id"}, "name" +" = "+compareToThis, null, null, null, null); 

Estoy volviendo . el cursor como una cadena

el error está diciendo:

hay tal columna: compareToThis: al compilar ..... la declaración

Mi pregunta es: ¿por qué SQLite configura el atributo compareToThis como una columna cuando es solo un valor?

¿Cómo puedo solucionar esto?

Gracias de antemano.

+1

no veo ningún problema en este 'nombre de "+"= "+ compareToThis' Creo que se necesita para rodear su compareToThis CADENA con 'sola quotes' –

Respuesta

7
Cursor cursor= db.query(TABLE_IMAGES, new String[]{"_id"}, "name" +" = ?", new String[]{compareToThis}, null, null, null); 

La selección debe incluir marcador de posición para el parámetro, y el siguiente argumento debe ser la matriz de parámetros.

+0

gracias, que salieron bien !!;) i Soy nuevo en SQLite. –

+0

Genial. No olvide marcar esta respuesta como correcta. –

+0

marcado como correcto;;) –

1

La solución de Vladimir funciona, pero si usted es como yo y se pregunta por qué su enfoque no funcionó inicialmente cuando debería, aquí está por qué: Es porque espera un entero a menos que use (simple o doble) comillas para indicar que es una cadena.

Por ejemplo, en MySql esto no producirá ningún resultado:

SELECT * FROM clients WHERE firstName = Bob; -- This will not work. 

Sin embargo, cuando usted se rodea con las citas, se devolverá un resultado, ya que identifica a Bob como una cadena literal.

Select * FROM clients WHERE firstName = 'Bob'; -- Single quotes work. 
Select * FROM clients WHERE firstName = "Bob"; -- Double quotes as well. 

Por lo tanto para que funcione, tendría que rodear su compareToString con comillas simples, como se mencionó Muhhammad dentro de los comentarios.

Cursor cursor= db.query(TABLE_IMAGES, new String[]{"_id"}, "name" +'" = "+compareToThis+"'", null, null, null, null);