Параметры ActionScript и SQLite для Select с использованием Like - PullRequest
2 голосов
/ 05 декабря 2011

Я попытался посмотреть в Google, но без удачи ...

У меня есть SELECT SQLStatement, и я хочу использовать оператор LIKE, но параметры не будут работать, и запрос выдаст мне ошибку

    public function getUsersList(username:String):SQLStatement
    {           
        selectRecord= new SQLStatement();
        selectRecord.sqlConnection = connection;                                
        selectRecord.text =
            "SELECT id_user, username,password,profile,leg_cliente " +
            "FROM userlist  " +
            "WHERE username like '%:username%'";            
        selectRecord.parameters[":username"] = username;

        return selectRecord;
    }

Полученная ошибка:

': имя пользователя' Имя (я) параметра найдено в свойстве параметров, но не указано в SQL.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

Я решил поставить подстановочный знак % в параметрах вместо оператора ...

        selectRecord.text =
            "SELECT id_user, username,password,profile,leg_cliente " +
            "FROM userlist  " +
            "WHERE username like :username";            
        selectRecord.parameters[":username"] = "%"+ username+"%";

Начальная проблема была вызвана, потому что запрос был похож на

    selectRecord.text =
        "SELECT id_user, username,password,profile,leg_cliente " +
        "FROM userlist  " +
        "WHERE username like '%:username%'";    

Помещение в оператор одинарной кавычки не позволит оператору установить параметр, я полагаю, потому что ключ параметра (в Statement.text) рассматривается как текст, а не сам параметр ...

0 голосов
/ 05 декабря 2011

Это странная проблема, с которой я застрял уже довольно давно.Одно из решений, которое я использовал, выглядит следующим образом:

var statementText:String="SELECT id_user, username,password,profile,leg_cliente " +
        "FROM userlist  " +
        "WHERE username like '%:username%'";

var params:Dictionary=new Dictionary();
params[":username"] = username;


for(var key:Object in params) {
    while(statementText.indexOf(key.toString()) >= 0) {
        statementText= statementText.replace(key, params[key]);
    }   
}

selectRecord.text = statementText;
...