2011-06-08 67 views
2

看起来selectionArgs尚未正确绑定,但我无法在此处找到任何错误。Android数据库:使用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 
+0

我相信你不硬编码新的字符串[] {“196”},但使用一些变量。你是否试图检查变量值是否正确? – woodshy 2011-06-08 13:37:04

+0

我想简单地解决这个问题。即使使用硬编码值,它也会返回空游标。 – pierrotlefou 2011-06-08 13:43:33

+0

而变量值是正确的, – pierrotlefou 2011-06-08 13:51:13

回答

1

我经历了同样的问题,这可能是一个转换的问题,但我看不出如何解决这一问题,除了如果使用:科西嘉的
String sql = "SELECT * FROM tblEvent_extDes WHERE (eguid = " + 196 + ") ";

即可用只有196不是用户输入;)

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... 

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