我正在使用sqlite3_exec()函数来执行SQL插入命令。当我需要插入需要编码的字符串时,问题就开始了。编码字符串以便插入SQLite
例如,我想插入以下字符串:“f('hello')”。如果我想插入这个字符串,我需要将“'”改为“''”。
我的问题是,我如何编码这些字符串?有我能指望的功能吗?或者一张详细列出所有需要的编码的表格?
谢谢! :-)
我正在使用sqlite3_exec()函数来执行SQL插入命令。当我需要插入需要编码的字符串时,问题就开始了。编码字符串以便插入SQLite
例如,我想插入以下字符串:“f('hello')”。如果我想插入这个字符串,我需要将“'”改为“''”。
我的问题是,我如何编码这些字符串?有我能指望的功能吗?或者一张详细列出所有需要的编码的表格?
谢谢! :-)
而不是手动转义字符串(这是容易出错,并邀请SQL注入攻击),我强烈建议使用预处理语句和绑定值;请阅读sqlite3_bind_XXX和sqlite3_prepare_v2
sqlite_mprintf
支持%q
。
“也许”你应该使用类似准备好的语句。我不是SQLite的专家,但我找到了这个链接(http://www.sqlite.org/c3ref/stmt.html),它可以帮助你。它关于SQL语句对象。
使用绑定值将解决这个问题,它也会使sqlite更快,因为它会记住先前执行的sql语句,并且可以重用它们的执行计划。当sql语句总是略有不同时,这不起作用,因为它散列了完整的sql语句。