iOS:如何在sqlite中插入特殊的“或”字符

我有一个NSString变量,其中包含一些字符“和”。那么,我怎样才能将它作为参数插入到Sqlite3中的表中?感谢您的帮助:)

要避免格式化问题,请使用参数将字符串传递给SQL语句:

NSString *str = @"some characters \" and \'"; const char *sql = "INSERT INTO MyTable(Name) VALUES(?)"; sqlite3_stmt *stmt; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) { sqlite3_bind_text(stmt, 1, [str UTF8String], -1, SQLITE_TRANSIENT); if (sqlite3_step(stmt) != SQLITE_DONE) { NSLog(@"SQL execution failed: %s", sqlite3_errmsg(db)); } } else { NSLog(@"SQL prepare failed: %s", sqlite3_errmsg(db)); } sqlite3_finalize(stmt); 

用2个引号来逃避报价。 Doublequote不需要替换

 '' 

SQLFiddle演示

您可以通过在其前面放置\字符来使用特殊字符初始化NSString。
例如:

 NSString *string = @"This is \" and this is \'"; 

我会自动替换caracter:

 NSString *stringFromExternalDatabase = @"Capital of Chad is N'Djamena"; [stringFromExternalDatabase stringByReplacingOccurrencesOfString:@"'" withString:@"\'"]; 

然后将stringFromExternalDatabase放在表中。

从数据库中检索stringFromExternalDatabase时,执行其他操作:

 [stringFromExternalDatabase stringByReplacingOccurrencesOfString:@"\'" withString:@"'"];