如何使用iOS在sqlite中存储双引号

我使用sqlite数据库在离线模式下存储值.在这些值中,它包含带双引号的字符串.(例如:hai“Man”)
Nsstring* insertsql = [Nsstring stringWithFormat: @"UPDATE tablename SET SummaryDescription=\"%@\" WHERE SummaryDate1=\"%@\" AND ClientId=\"%@\"",SummaryDescription,[_dic objectForKey:@"SummaryDate1"],[[NSUserDefaults standardUserDefaults]objectForKey:@"ClientID"]];

 [db updateTable:insertsql];

在SummaryDescription中包含值hai“Man”.但我无法将此数据存储到数据库中.
如果我们删除这个双引号我们可以存储这些数据.是否有任何其他方法来存储这些类型的双引号字符串.

解决方法

要存储双引号或任何其他特殊字符,请使用参数将字符串传递给sql语句( as suggested by CL in this answer):
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],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);

希望这会帮助你.快乐编码:)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...