摘自 sqlite3_mprintf() API 上的 SQLite 参考资料
http://www.sqlite.org/c3ref/mprintf.html
“%Q 选项的作用类似于 %q,除了它还在整个字符串的外部添加单引号。此外,如果参数列表中的参数是 NULL 指针,则 %Q 替换文本“NULL”(不带单引号) 。”
使用 %q 时,我们必须小心始终在其周围使用单引号,例如
char *zText = "It's a happy day!";
char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
总是使用 %Q 而不是 %q 似乎更方便,如下所示:
char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
我的问题 - 是否有一个有效的用例,其中 '%q' 更合适或更有效?或者我可以在所有语句中安全地使用 %Q 作为 %s 的替代品吗?