在sqlite中插入特殊字符

时间:2013-07-25 10:10:03

标签: iphone ios objective-c sqlite

我试试这段代码。

    query = [NSString stringWithFormat:@"INSERT INTO Bookmark(Names,Details) Values('%@','%@')", delegate.str, delegate.str1];

    NSLog(@"%@",query);

    sqlite3_stmt *compiledStatement;

    if (sqlite3_open([databasepath UTF8String],&database) == SQLITE_OK)
    {

        if(sqlite3_prepare_v2(database,[query UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
        {
            if(SQLITE_DONE != sqlite3_step(compiledStatement))
                NSLog( @"Error while inserting data: '%s'", sqlite3_errmsg(database));
            else
                NSLog(@"New data inserted");

            sqlite3_reset(compiledStatement);
        }else
        {
            NSLog( @"Error while inserting '%s'", sqlite3_errmsg(database));
        }
        sqlite3_finalize(compiledStatement);
    }  

这是我想存储sqlite INSERT INTO书签(详情)值('让我们举一个例子,23456789除以7,11,13。

从单位的位置开始制作三连音。

23 ...... 456 ... 789

现在添加备用三元组:

23 + 789 = 812和456。

这两个总和的差异: 812 - 456 = 356

现在将这个差异除以7,我们得到提醒6

将此差异除以11,我们得到提醒4

并将此差异除以13,我们得到提醒5')

这是写完你的线后的错误......

2013-07-25 16:38:14.653数学技巧提示模式[4346:c07]插入'near“s时出错”:语法错误'

我如何插入特殊字符,请提前帮助我。

1 个答案:

答案 0 :(得分:4)

您永远不应使用stringWithFormat等手动形成SQL查询。

相反,您应该使用带有变量绑定的预准备语句。这将确保正确的编码并避免SQL注入等。您应该首先查看this sqlite introduction

基本模式是使用sqlite3_prepare后跟sqlite3_bind_text之类的内容来设置查询中?个占位符之一的值。