【问题标题】:not able to insert the string has apostrophe into sqlite ios无法将带撇号的字符串插入sqlite ios
【发布时间】:2015-07-09 14:32:03
【问题描述】:

我正在尝试将字符串值(Okra(Lady's Finger)) 插入 sqlite。但字符串有撇号。它给出的错误消息是 =near "s": 语法错误。我正在使用以下代码。

-(void)insertinto_DataBase :(NSString *)str 
{
 homeDomains = NSSearchPathForDirectoriesInDomains
 (NSDocumentDirectory,NSUserDomainMask, YES);
 documentsDirectory = [homeDomains objectAtIndex:0];
 _dataBasePath = [documentsDirectory 
 stringByAppendingPathComponent:@"Store.db"];
 const char *dbpath = [_dataBasePath UTF8String];
 NSString *insertSQL;
 if (sqlite3_open(dbpath, & _albumDB) == SQLITE_OK)
 {

    insertSQL = [NSString stringWithFormat: @"INSERT INTO Details 
   (str) VALUES ('%@')", str];

    char *errmsg=nil;
    if(sqlite3_exec(_albumDB, [insertSQL UTF8String], NULL, NULL, 
     &errmsg) == SQLITE_OK)
    {
    }
    else
    {
        NSLog(@"Error Message is =%s",errmsg);
    }
 }
 sqlite3_close(_albumDB);
 }

提前致谢。

【问题讨论】:

  • 为了转义撇号,请尝试使用双引号字符。希望它会奏效。喜欢'M''Bunty'
  • 不,不要使用双撇号,使用 SQL 参数绑定。不要在 SQL 语句中使用VALUES ('%@'),而是使用VALUES (?),稍后您需要在 sqlite_step() OK 块中使用 sql_bind_text() 函数。这是一个类似的 Stackoverflow 问题:stackoverflow.com/questions/21862265/…

标签: ios objective-c database sqlite


【解决方案1】:

不要使用“kitty”,而是使用“kitty”。 :)

在您的代码中, 添加这个

str = [str stringByReplacingOccurrencesOfString:@ "'" withString: @"''"];

就在insertSQL =.... 语句之前

【讨论】:

    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多