考虑以下代码
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()等效函数?
否。使用绑定参数。
请参阅: http : //www.sqlite.org/c3ref/prepare.html http://www.sqlite.org/c3ref/bind_blob.html