插入SQLite时如何处理逗号和撇号字符

use*_*898 0 c++ sqlite qt

我有包含撇号和逗号的字符串,当我执行插入到SQLite时,它给出了我的错误,例如字符串,如下所示:

...., 'The Smiths - I Know It's Over', .....
"Over": syntax error Unable to execute statement
Run Code Online (Sandbox Code Playgroud)

我怎么能或我能做些什么来保持字符串中的撇号但是预先形成有效的插入?即时通讯使用Qt c ++.

Mik*_*our 7

你不应该将任意字符串直接放入SQL中 - 这就是要求注入攻击.相反,使用绑定参数 ; 就像是:

sqlite3_stmt * statement;
sqlite3_prepare(db, "select * from students where name=?", -1, &statement, NULL);
sqlite3_bind_text(statement, 1, "'; drop table students --", -1, SQLITE_STATIC);
sqlite3_step(statement);
sqlite3_finalize(statement);
Run Code Online (Sandbox Code Playgroud)

这将?使用给定的字符串替换查询中的第一个参数(),不会将任何'字符解释为字符串的结尾,或者将字符串的任何部分解释为SQL.