我试试这段代码。
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时出错”:语法错误'
我如何插入特殊字符,请提前帮助我。
答案 0 :(得分:4)
您永远不应使用stringWithFormat等手动形成SQL查询。
相反,您应该使用带有变量绑定的预准备语句。这将确保正确的编码并避免SQL注入等。您应该首先查看this sqlite introduction。
基本模式是使用sqlite3_prepare
后跟sqlite3_bind_text
之类的内容来设置查询中?
个占位符之一的值。