Sqlite SQL格式化输入函数splite3_mprintf

sqlite中,
在使用sql语句写入字符串数据时,
由于字符数据中可能隐含转义字符,
如果对于他们不作处理,执行时,exec函数将不识别,或者造成注入攻击
这个时候sqlite_mprintf(),
应该就是必须使用了,配合‘%q’将字符数据中的转义字符,直接转换,
就不用担心字符串中含有‘单引号,这样造成sql语句不识别的问题。

For example,assume the string variable zText contains text as follows:

char *zText = "It's a happy day!";

One can use this text in an sql statement as follows:

char *zsql = sqlite3_mprintf("INSERT INTO table VALUES('%q')",zText);
sqlite3_exec(db,zsql,0);
sqlite3_free(zsql);

Because the %q format string is used,the '\'' character in zText is escaped and the sql generated is as follows:

INSERT INTO table1 VALUES('It''s a happy day!')

This is correct. Had we used %s instead of %q,the generated sql would have looked like this:

INSERT INTO table1 VALUES('It's a happy day!')

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...