如何使用iOS在sqlite中存储双引号

Kir*_*air 3 sqlite ios

我使用sqlite数据库在离线模式下存储值.在这些值中,它包含带双引号的字符串.(例如:hai"Man")

NSString* insertSQL = [NSString stringWithFormat: @"UPDATE tablename SET SummaryDescription=\"%@\" WHERE SummaryDate1=\"%@\" AND ClientId=\"%@\"",SummaryDescription,[_dic objectForKey:@"SummaryDate1"],[[NSUserDefaults standardUserDefaults]objectForKey:@"ClientID"]];

 [db updateTable:insertSQL];
Run Code Online (Sandbox Code Playgroud)

在SummaryDescription中包含值hai"Man".但我无法将此数据存储到数据库中.如果我们删除这个双引号我们可以存储这些数据.是否有任何其他方法来存储这些类型的双引号字符串.

Shu*_*ndu 5

要存储双引号或任何其他特殊字符,请使用参数将字符串传递给SQL语句(如本答案中的CL所示):

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);
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.快乐编码:)