База данных Android: проблема при привязке параметров с помощью selectionArgs - PullRequest
2 голосов
/ 08 июня 2011

Похоже, что 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 ]

1 голос
/ 10 мая 2013

Я могу подтвердить то, что вы видите, и вот как я с этим справляюсь;

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

Я не нашел другого способа решения этой проблемы. Я надеюсь, что это поможет вам или кому-либо еще.

1 голос
/ 08 июня 2011

У меня возникла та же проблема, возможно, это проблема конверсии, однако я не мог понять, как это исправить, кроме случаев, когда вы используете:
String sql = "SELECT * FROM tblEvent_extDes WHERE (eguid = " + 196 + " ) ";

, что в corse можно использовать, только если196 не вводится пользователем;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...