插入字符串值撇号

考虑的字符串与需要被插入到一个SQLite表撇号。

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

如何标记或逃避的价值撇号INSERT语句?

--------------解决方案-------------

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

你不应该通过直接输入到查询作为这样的字符串。 它不仅是一个麻烦事,它也容易受到SQL注入攻击,这可能不是一个Mac应用程序的一个大问题,但仍是当你有准备的语句在您的处置是一个坏主意。 预处理语句确保底层数据库中读取的实际,修改,输入值安全。

为了您的具体的例子(检查删除错误简洁/清晰度):

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

(未经测试,但你的想法)。

你可以使用一个撇号''来代替。
比如:插入都没有
Insert into table_name values('haven''t');

参考:https://www.sqlite.org/faq.html#q14

+ (NSString *) escapeString:(NSString *)string {
NSRange range = NSMakeRange(0, [string length]);
return [string stringByReplacingOccurrencesOfString:@"'" withString:@"''" options:NSCaseInsensitiveSearch range:range];
}

要么:

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

分类:iphone 时间:2015-03-15 人气:0
本文关键词: iPhone,目标C源码
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.673 (s). 10 q(s)