2012-02-18 2 views
10

어떻게하면 intger를 안드로이드 용 sqlite의 rawquery에 전달할 수 있습니까? 여기서 g와 s를 질의하지 않습니다. 안내해주십시오.안드로이드 SQLite rawquery 매개 변수

int g, s; 

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

답변

34

모든 매개 변수 장소는?로 지정해야합니다. 쿼리에 대한 매개 변수는 항상 문자열이기 때문에 정수에 대해서는 특별한 것이 없습니다. 이것은 당신을 위해 작동합니다 : 귀하의 요청에

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

여러 수준에 깨진하지만 물었다 영업 이익은 무책임한 것보다 훨씬 더 나쁜 해결책을 옹호. SQL 인젝션을 읽어보십시오. –

-3

매개 변수는 문자열이 너무 문자열로 이러한 매개 변수를 변환하고 다음과 같이 쿼리를 작성하시기 바랍니다해야합니다.

사용 String.valueOf();

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

덕분에

+2

이것은 SQL 주입을 허용합니다. – Buttink

관련 문제