2012-02-18 18 views
10

¿Cómo puedo pasarle una intérprete a una rawquery en sqlite para Android? Aquí no está tomando g y s en consulta. Por favor guía.Parámetros de rawquery Android SQLite

int g, s; 

    Cursor cur3 = database2.rawQuery("select max(UnixTimeStamp) from Quote where EmoticonID=%d and SubCategoryID=%d" ,new String [] {g,s}); 

Respuesta

34

Todos los lugares de los parámetros se deben designar con?. Los parámetros de la consulta son siempre sin cadena, por lo que no hay nada especial sobre los enteros. Esto debería funcionar para usted:

Cursor cur3 = database2.rawQuery("select max(UnixTimeStamp) from Quote where EmoticonID=? and SubCategoryID=?" ,new String [] {String.valueOf(g),String.valueOf(s)}); 
-5
Cursor cur3 = database2.rawQuery("select max(UnixTimeStamp) from Quote where EmoticonID=" 
           + g + " and SubCategoryID = " + s + " "); 
+3

roto en múltiples niveles, pero abogando por una solución significativamente peor que lo que el PO se plantea es irresponsable. Por favor, lea sobre inyección SQL. –

-3

parámetro en la consulta tiene que ser de cadena así que por favor convertir estos parámetros en la cadena y escribir la consulta de la siguiente manera.

Uso String.valueOf();

Cursor c = db.rawQuery(SELECT max(UnixTimeStamp) 
         FROM Quote 
         WHERE EmoticonID ='"+d+"' AND SubCategoryID ='"+ s +"'"); 

Gracias

+2

Esto permite inyecciones sql. – Buttink