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'がより適切またはより効率的な有効なユースケースはありますか?または、すべてのステートメントで%sの代わりに%Qを安全に使用できますか?