Escape-строка SQLite c ++ - PullRequest
       4

Escape-строка SQLite c ++

8 голосов
/ 27 января 2011

Рассмотрим следующий код

char bar[] = "hello world \"One\", two, 'three'";
char *zSQL = sqlite3_mprintf("INSERT INTO stuff (`foo`) VALUES ('%q');", bar ) ; 
sqlite3_exec(db, zSQL, 0, 0, 0);
sqlite3_free(zSQL);
/* Produces a exception error */

Проблема в том, что в операторе SQL кавычки не экранируются. Если бы я программировал на PHP, я бы использовал функцию типа sqlite_escape_string , чтобы экранировать строки перед вставкой их в запрос SQL, но я не могу найти эквивалентную функцию в C ++. Я мог бы построить свою собственную функцию, подобную sqlite_escape_string, но я уверен, что она должна быть уже написана / протестирована ...

Существует ли эквивалентная функция sqlite_escape_string () для c ++?

Ответы [ 2 ]

11 голосов
/ 27 января 2011

Нет.Используйте связанные параметры.

См .:
http://www.sqlite.org/c3ref/prepare.html
http://www.sqlite.org/c3ref/bind_blob.html

1 голос
/ 27 января 2011

У вас тот же вопрос, который задавали многие.Ничего не встроено.

Лучшим решением для конкатенации строк было бы параметры связывания , что обходит проблему с выходом.

...