2015-07-09 2 views
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); 
} 

Заранее спасибо.

+0

Для Спасаясь апостроф пытается использовать двойную вверх одинарную кавычку. Надеюсь, он сработает. например '' M''Bunty'' – Buntylm

+0

Нет, не используйте двойной апостроф, используйте привязки параметров SQL. Вместо использования 'VALUES ('% @')' в вашем SQL-заявлении используйте 'VALUES (?)', Вам нужно будет использовать функцию sql_bind_text() внутри блока sqlite_step() OK позже. Вот аналогичный вопрос Stackoverflow: http://stackoverflow.com/questions/21862265/using-nsstring-parameters-into-sqlite-statement-ios – Zhang

ответ

4

Вместо использования 'kitty's' используйте 'kitty' ''. :)

В коде добавить

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

непосредственно перед insertSQL =.... заявлением

Смежные вопросы