【问题标题】:iOS: How to insert Special like " or ' character in sqliteiOS:如何在 sqlite 中插入特殊的“或”字符
【发布时间】:2014-01-30 18:16:40
【问题描述】:

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

【问题讨论】:

标签: ios sqlite


【解决方案1】:

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

''

SQLFiddle demo

【讨论】:

    【解决方案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);
    

    【讨论】:

    • 但是字符 " 或 ' 在我的 NSString 变量中,如何将 \ 放在前面?
    • 只有在源代码中直接写入字符串时才需要使用 \ 转义(如我的示例所示)。有了 NSString 后,如果将其绑定为参数,则无需以任何方式对其进行修改。
    • 如果我想使用包含 " 和 ' 等特殊字符的字符串更新 db 中的现有值
    • @BraneDullet 然后使用更新。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我会自动替换字符:

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

      然后将 stringFromExternalDatabase 放在一个表中。

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2019-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多