Android数据库:使用selectionArgs绑定参数时出现问题

时间:2011-06-08 13:12:22

标签: android database

似乎selectionArgs没有正确绑定,但我在这里找不到任何错误。

  • 这将返回2个结果 是正确的

    String sql = "SELECT * FROM tblEvent_extDes WHERE (eguid = 196 ) ";
    c = epgDB.rawQuery(sql, new String[] {});
    
  • 这不会返回任何结果。 为什么?

     String sql = "SELECT * FROM tblEvent_extDes WHERE (eguid = ? ) ";
     c = epgDB.rawQuery(sql, new String[] {"196"});
    

编辑: 这有效......

 sql = "SELECT rowid * FROM tblEvent_extDes WHERE eguid = " +  String.valueOf(196);
 // could replace 196 with a variable

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,这可能是转换问题,但是除非您使用以下内容我无法看到如何解决此问题:
String sql = "SELECT * FROM tblEvent_extDes WHERE (eguid = " + 196 + " ) ";

仅当196不是用户输入时,才能使用corse;)

答案 1 :(得分:1)

我可以确认你看到了什么,这就是我处理它的方式;

String selection = null;
String[] selectionArgs = null;
if(API_LEVEL <= 10){
    //Make sure that you handle String variables accordingly. 
    //This assumes an int or long value.
    selection = "id = " + variableId; 
    selectionArgs = null;
}else{ //Honeycomb/ICS/Jellybean
    selection = "id = ?";
    selectionArgs = new String[]{variableId});
}
//Query Code Here...

我还没有找到任何其他方法来处理这个问题。我希望这可以帮助你或其他任何人。