转义字符串时发生SQLite3错误
我正在创建一个下载XML并将其值插入SQLite3数据库的应用程序。每当出现转义字符串时发生SQLite3错误,sql,macos,sqlite,Sql,Macos,Sqlite,我正在创建一个下载XML并将其值插入SQLite3数据库的应用程序。每当出现“,它就会给出一个错误,所以我创建了这个函数来转义字符串: +(NSString *)escapeString:(NSString *)string { NSRange range = NSMakeRange(0, [string length]); NSMutableString *str = [NSMutableString stringWithString:string]; [str re
“
,它就会给出一个错误,所以我创建了这个函数来转义字符串:
+(NSString *)escapeString:(NSString *)string {
NSRange range = NSMakeRange(0, [string length]);
NSMutableString *str =
[NSMutableString stringWithString:string];
[str replaceOccurrencesOfString:@"'" withString:@"\\\'" options:0 range:range];
return str;
}
问题是数据库现在正在发送错误
无法识别的令牌:“\”
。我做错了什么?顺便说一句,我仍然在使用Tiger,这是否与使用旧版本的SQLite有关?如果是,我该如何解决?请注意,我正在创建的应用程序也必须适用于Tiger,最好是Panther。SQL不能用斜杠字符转义。它使用单引号“
在字符串中转义
INSERT INTO xyz VALUES('5 O''clock');
所以我假设(我不知道你用的是什么语言)这一行:
[str replaceOccurrencesOfString:@"'" withString:@"\\\'" options:0 range:range];
实际上应该是:
[str replaceOccurrencesOfString:@"'" withString:@"''" options:0 range:range];
您自己擦洗内容违反了最佳实践。最好使用sqlite的绑定工具
而不是自己操作字符串:
sql = "INSERT INTO xyz VALUES('"+ my_value +"');"
您可以使用如下内容:
sql = "INSERT INTO xyz VALUES(?1);"
然后使用bind调用分配?1
的内容