Экранирование строки для SQL в C ++ - PullRequest
0 голосов
/ 26 декабря 2010

Я ищу простую функцию "addlashes" для программы, которая должна сохранить в базе данных sqlite некоторую информацию.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 26 декабря 2010

Вместо того, чтобы пытаться повторно реализовать addlashes, вы должны вместо этого изучить использование подготовленных операторов. Они проще, быстрее и проще.

2 голосов
/ 26 декабря 2010
  1. Я бы предложил использовать подготовленный оператор и привязку данных к запросу, чтобы вам не нужно было экранировать или использовать такие библиотеки, как CppDB или SOCI чтобы сделать это легко
  2. Sqlite3 использует стандартные запросы SQL, поэтому для экранирования текста вам нужно «удвоить кавычки» для блоба, вам необходимо шестнадцатеричное представление, т.е.

    C string: char const *s="I'm" -> SQL: 'I''m'
    C blob  : char s[2]={0xFF,0}  -> SQL: x'FF00'
    

    См.: http://www.sqlite.org/lang_expr.html

1 голос
/ 26 декабря 2010

SQLite предоставляет 2 функции sqlite_encode_binary () и sqlite_decode_binary (), которые можно использовать для разрешения хранения и извлечения двоичных данных.

0 голосов
/ 26 декабря 2010

Я думаю, что echo " \\hi "; - выход \ привет

...