0
Я пытаюсь вставить строковые значения (Okra (Lady's Finger)) в sqlite. Но строка имеет апостроф. Это сообщение Error Message is = near "s": синтаксическая ошибка. Я использую следующий код.Невозможно вставить строку имеет апостроф в sqlite ios
-(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'' – Buntylm
Нет, не используйте двойной апостроф, используйте привязки параметров SQL. Вместо использования 'VALUES ('% @')' в вашем SQL-заявлении используйте 'VALUES (?)', Вам нужно будет использовать функцию sql_bind_text() внутри блока sqlite_step() OK позже. Вот аналогичный вопрос Stackoverflow: http://stackoverflow.com/questions/21862265/using-nsstring-parameters-into-sqlite-statement-ios – Zhang