Строка кодирования для вставки SQLite - PullRequest
1 голос
/ 30 августа 2011

Я использую функцию sqlite3_exec () для выполнения команды SQL Insert.Проблема начинается, когда мне нужно вставить строки, которые должны быть закодированы.

Например, я хочу вставить следующую строку: "f ('hello')".Если я хочу вставить эту строку, мне нужно изменить «» на «».

Мой вопрос: как мне кодировать эти строки?Есть ли функция, на которую я могу рассчитывать?или таблица, которая детализирует все необходимые коды?

Спасибо!: -)

Ответы [ 4 ]

3 голосов
/ 30 августа 2011

Вместо того, чтобы вручную экранировать строки (которые подвержены ошибкам и вызывают атаки с использованием SQL-инъекций), я настоятельно рекомендую использовать подготовленные операторы и значения связывания; читать о sqlite3_bind_XXX и sqlite3_prepare_v2

1 голос
/ 30 августа 2011

Использование значений связывания решит эту проблему, а также ускорит sqlite, поскольку он запоминает ранее выполненные операторы sql и может повторно использовать их планы выполнения.Это не работает, когда оператор SQL всегда немного отличается, потому что он хэширует полный оператор SQL.

0 голосов
/ 30 августа 2011

«Может быть», вы должны использовать что-то вроде готового утверждения.Я не эксперт по SQLite, но я нашел эту ссылку (http://www.sqlite.org/c3ref/stmt.html), и она может вам помочь. Это объект SQL Statement.

0 голосов
/ 30 августа 2011

sqlite_mprintf поддерживает %q для этого.

...