SQLiteテーブルに挿入する必要があるアポストロフィを持つ文字列を考えてみましょう。アポストロフィ付きの文字列値の挿入
INSERT INTO myTable (table_Title TEXT) VALUES ('world's')
どのようにマークアップやINSERT
文の値にアポストロフィをエスケープすることができますか?
SQLiteテーブルに挿入する必要があるアポストロフィを持つ文字列を考えてみましょう。アポストロフィ付きの文字列値の挿入
INSERT INTO myTable (table_Title TEXT) VALUES ('world's')
どのようにマークアップやINSERT
文の値にアポストロフィをエスケープすることができますか?
http://www.sqlite.org/c3ref/bind_blob.html
あなたは、このような文字列としてクエリに直接入力を渡すべきではありません。それは迷惑であるばかりでなく、Macアプリにとって大きな問題ではないSQLインジェクション攻撃に対しても脆弱ですが、Prepared Statementsを自由に使うことができます。 Prepared Statementは、基本となるデータベースが実際の変更されていない入力値を安全に読み取るようにします。あなたの具体的な例
(簡潔/明確にするため取り除かエラーチェック):
sqlite3 *db;
sqlite3_open("test.db", &db);
// Create a prepared statement
sqlite3_stmt *stmt;
const char *sql = "INSERT INTO myTable (table_Title TEXT) VALUES (?)";
sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
// Bind the parameter (safely)
sqlite3_bind_text(stmt, 1, "world's", -1, NULL);
// Execute the prepared statement
sqlite3_step(stmt);
(未テストが、あなたのアイデアを得ます)。
単一のアポストロフィの代わりに ''を使用できます。 https://www.sqlite.org/faq.html#q14
:挿入するInsert into table_name values('haven''t');
リファレンスを持っています