2

我有一个 NSString 变量,其中包含一些字符“和”。那么,如何将它用作参数以插入 Sqlite3 中的表中?感谢您的帮助:)

4

4 回答 4

4

用 2 个引号转义引号。双引号不需要替换

''

SQLFiddle 演示

于 2013-10-04T10:47:04.273 回答
2

为避免格式问题,请使用参数将字符串传递到 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);
于 2013-10-04T11:58:46.270 回答
1

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

NSString *string = @"This is \" and this is \'";
于 2013-10-04T10:49:33.193 回答
0

我会自动替换字符:

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

然后将 stringFromExternalDatabase 放在一个表中。

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

[stringFromExternalDatabase stringByReplacingOccurrencesOfString:@"\'" withString:@"'"];
于 2014-01-30T10:16:40.133 回答