2014-12-12 1 views
1

В моем приложении AIR я использую базу данных SQLite. И в какой-то момент мне нужно передать запрос с кавычками. Я использую регулярное выражение, чтобы избежать их, как это:Вложенные кавычки в запросе запроса SQLite

public static function escapeQuotes(str:String):String 
{ 
    return str.replace(/"/g, '\\"'); 
} 

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

SELECT * FROM Prof_Eng_Russ WHERE english || english_keywords LIKE "%something \"name\"%" 

И я получаю эту ошибку: Error # 2044: Необработанное SQLErrorEvent :. errorID = 3115, operation = execute, message = Ошибка # 3115: Ошибка SQL. , details = near 'name': синтаксическая ошибка

ответ

1

SQL не использует обратную косую черту для экранирования. Сбежавшие котировки будут в два раза, но проще использовать параметры:

sql = new SQLStatement(); 
sql.sqlConnection = ...; 
sql.text = "SELECT * FROM Prof_Eng_Russ WHERE english || english_keywords LIKE @pattern"; 
sql.parameters["@pattern"] = "%something \"name\"%"; 

(Это строка ActionScript, который бежал по правилам ActionScript.)

+0

спасибо. Но я получаю эту ошибку: Unhandled SQLErrorEvent :. errorID = 3115, operation = execute, message = Ошибка # 3115: Ошибка SQL. , details = '@ pattern' имя параметра, найденное в свойстве параметров, но не в указанном SQL. – momijigari

+0

Да, это моя ошибка. Мне пришлось вызвать .clearParameters() после .execute. – momijigari

Смежные вопросы