【发布时间】:2015-07-09 14:32:03
【问题描述】:
我正在尝试将字符串值(Okra(Lady's Finger)) 插入 sqlite。但字符串有撇号。它给出的错误消息是 =near "s": 语法错误。我正在使用以下代码。
-(void)insertinto_DataBase :(NSString *)str
{
homeDomains = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory,NSUserDomainMask, YES);
documentsDirectory = [homeDomains objectAtIndex:0];
_dataBasePath = [documentsDirectory
stringByAppendingPathComponent:@"Store.db"];
const char *dbpath = [_dataBasePath UTF8String];
NSString *insertSQL;
if (sqlite3_open(dbpath, & _albumDB) == SQLITE_OK)
{
insertSQL = [NSString stringWithFormat: @"INSERT INTO Details
(str) VALUES ('%@')", str];
char *errmsg=nil;
if(sqlite3_exec(_albumDB, [insertSQL UTF8String], NULL, NULL,
&errmsg) == SQLITE_OK)
{
}
else
{
NSLog(@"Error Message is =%s",errmsg);
}
}
sqlite3_close(_albumDB);
}
提前致谢。
【问题讨论】:
-
为了转义撇号,请尝试使用双引号字符。希望它会奏效。喜欢
'M''Bunty' -
不,不要使用双撇号,使用 SQL 参数绑定。不要在 SQL 语句中使用
VALUES ('%@'),而是使用VALUES (?),稍后您需要在 sqlite_step() OK 块中使用 sql_bind_text() 函数。这是一个类似的 Stackoverflow 问题:stackoverflow.com/questions/21862265/…
标签: ios objective-c database sqlite