Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
无法在sqlite ios中插入带撇号的字符串_Ios_Objective C_Database_Sqlite - Fatal编程技术网

无法在sqlite ios中插入带撇号的字符串

无法在sqlite ios中插入带撇号的字符串,ios,objective-c,database,sqlite,Ios,Objective C,Database,Sqlite,我试图将字符串值(Okra(Lady's Finger))插入sqlite中,但字符串中有撇号。它给出的错误消息是=接近“s”:语法错误。我正在使用以下代码 -(void)insertinto_DataBase :(NSString *)str { homeDomains = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory,NSUserDomainMask, YES); documentsDirectory = [home

我试图将字符串值(Okra(Lady's Finger))插入sqlite中,但字符串中有撇号。它给出的错误消息是=接近“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);
 }

提前感谢。

不要使用“kitty's”,而是使用“kitty's”。)

在代码中, 加上这个

str = [str stringByReplacingOccurrencesOfString:@ "'" withString: @"''"];

在插入SQL=..语句之前,使用“kitty”代替“kitty”。)

在代码中, 加上这个

str = [str stringByReplacingOccurrencesOfString:@ "'" withString: @"''"];

在用于转义撇号的
insertSQL=..
语句之前,请尝试使用双引号字符。希望它能起作用。像
'M''Bunty'
不,不要使用双撇号,使用SQL参数绑定。在SQL语句中使用
值('%@')
,而不是使用
值(?)
,稍后需要在sqlite\u step()OK块中使用SQL\u bind\u text()函数。这里有一个类似的Stackoverflow问题:为了转义撇号,请尝试使用双引号和单引号字符。希望它能起作用。像
'M''Bunty'
不,不要使用双撇号,使用SQL参数绑定。在SQL语句中使用
值('%@')
,而不是使用
值(?)
,稍后需要在sqlite\u step()OK块中使用SQL\u bind\u text()函数。这里有一个类似的Stackoverflow问题: