Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转义字符串时发生SQLite3错误_Sql_Macos_Sqlite - Fatal编程技术网

转义字符串时发生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

我正在创建一个下载XML并将其值插入SQLite3数据库的应用程序。每当出现
,它就会给出一个错误,所以我创建了这个函数来转义字符串:

+(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
的内容