2012-02-18 28 views
10

Làm cách nào tôi có thể chuyển intger tới rawquery trong sqlite cho android. Tại đây, không lấy g và s vào truy vấn. Xin vui lòng hướng dẫn.Thông số 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}); 

Trả lời

34

Mọi địa điểm tham số phải được chỉ định bằng?. Các tham số cho truy vấn luôn là chuỗi nontheless, vì vậy không có gì đặc biệt về các số nguyên. Điều này sẽ làm việc cho bạn:

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

hỏng trên nhiều cấp độ, nhưng ủng hộ một giải pháp tồi tệ hơn những gì OP hỏi là vô trách nhiệm đáng kể. Vui lòng đọc lên trên SQL injection. –

-3

Parameter trong truy vấn của bạn cần phải được chuỗi vì vậy hãy chuyển đổi các tham số vào chuỗi và viết truy vấn của bạn như sau.

Sử dụng String.valueOf();

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

Cảm ơn

+2

Điều này cho phép tiêm sql. – Buttink