一尘不染

SQLite转义字符串C ++

sql

考虑以下代码

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编程,则在将字符串插入SQL查询之前,将使用sqlite_escape_string之类的函数对字符串进行转义,但是我似乎找不到C
++中的等效函数。我可以构建自己的sqlite_escape_string之类的函数,但我确定必须已经编写/测试了一个…

C ++是否有sqlite_escape_string()等效函数?


阅读 169

收藏
2021-03-10

共1个答案

一尘不染

否。使用绑定参数。

请参阅:
http :
//www.sqlite.org/c3ref/prepare.html

http://www.sqlite.org/c3ref/bind_blob.html

2021-03-10