用单引号替换双引号以存储在 SQLite 中

Posted

技术标签:

【中文标题】用单引号替换双引号以存储在 SQLite 中【英文标题】:Replacing double quote with single quote to store in SQLite 【发布时间】:2012-09-12 09:10:17 【问题描述】:

我想用单引号替换字符串中的所有双引号。我尝试过使用stringByReplacingOccurrencesOfString,但它不起作用。如何让它用单引号替换所有双引号,以便我可以将其存储到数据库中?

sqlite3_stmt    *statement;

NSString *string = [NSString stringWithString:charDesc.text];
[string stringByReplacingOccurrencesOfString:@"\"" withString:@"''"];

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    NSString *insertSQL = [NSString stringWithFormat: @"UPDATE CHARACTER SET charName = \"%@\", charDescription = \"%@\" WHERE charID = %i", charName.text, charDesc.text, charID];

    const char *insert_stmt = [insertSQL UTF8String];

    sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
    if (sqlite3_step(statement) == SQLITE_DONE)
        status.text = @"Succesfully Updated!";
    else
        status.text = @"Failed to Update!";
    

    sqlite3_finalize(statement);
    sqlite3_close(database); 

【问题讨论】:

你没有。您准备语句、绑定变量并插入行。 是什么意思?如果没有任何双引号,我可以成功添加到我的数据库中。但是如果我有双引号,我将无法添加 是的,你会的。如果您绑定变量,而不是自己构建完整的语句,sqlite 将处理所需的任何转义。 对不起。但你能给我举个例子吗?谢谢! sqlite.org/c3ref/bind_blob.html 【参考方案1】:
string=[string stringByReplacingOccurrencesOfString:@"\"" withString:@"'"];

【讨论】:

以上是关于用单引号替换双引号以存储在 SQLite 中的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中双引号添加的问题

c语言中如何输入双引号

java正则转义json中双引号

sql要查找的数据中有双引号咋办?

Python中,怎么在字符串里嵌入双引号或者单引号

sql注入过程中单引号和多个关键字被过滤怎么办?