2010-11-20 21 views
6

Bir SQLite tablosuna eklenmesi gereken kesme işareti olan bir dizeyi düşünün.Kesme işareti ile dize değeri ekleme

INSERT INTO myTable (table_Title TEXT) VALUES ('world's') 

Nasıl biçimlendirme veya INSERT açıklamada değerindeki kesme işareti kaçabilir?

cevap

16

http://www.sqlite.org/c3ref/bind_blob.html

Böyle bir dize olarak bir sorguya doğrudan girişi geçen olmamalıdır. Bu sadece bir sıkıntı değil, aynı zamanda bir Mac uygulaması için büyük bir sorun olmayabilir, SQL enjeksiyon saldırılarına karşı savunmasızdır, ancak Emrinizde Hazırlanmış İfadeleriniz olduğunda hala kötü bir fikirdir. Hazırlanan Bildirimler, temel veri tabanının gerçek, değiştirilmemiş, giriş değerlerini güvenli bir şekilde okumasını sağlar.

özel Örneğin

(hata kısalık/netlik için kaldırılmıştır Kontrolden):

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); 

(Untested, ancak fikir).