【问题标题】:My sqlite query(update) looks not working in iOS我的 sqlite 查询(更新)在 iOS 中看起来不起作用
【发布时间】:2014-08-06 22:47:20
【问题描述】:

我想像这样一次更新sqlite表中的一条记录。

travellName : self.savedName -> self.editedName

货币:self.savedCurrency -> self.editedCurrency

速率:self.savedRate -> self.editedRate

startBudget : self.savedBudget -> self.editedBudget

leftAssets : self.savedLeftAssets -> self.editedLeftAssets

在此处输入代码

NSString *qsql = [NSString stringWithFormat:@"UPDATE Travell SET travellName = 
'%@' and currency = '%@' and changeRate = '%@' and startBudget = '%@' and 
leftBudget = '%@' WHERE travellName = '%@' and currency = '%@' and changeRate =
'%@' and startBudget ='%@' and leftBudget = '%@'", self.editedName,   
self.editedCurrency, self.editedRate,self.editedBudget, self.editedLeftAssets, 
self.savedName, self.savedCurrency, self.savedRate, self.savedBudget, 
self.savedLeftAssets];

if(sqlite3_exec(db, [qsql UTF8String], NULL, NULL, &err) != SQLITE_OK){
        sqlite3_close(db);
        NSLog(@"Failed to update leftBudget");
}
else{
        NSLog(@"Success to update leftBudget");
}

这是我的代码。我有很多领域要一次更新。查询有问题吗??

我检查了变量的所有值,没有问题。 奇怪的是, sqlite3_exec(...) 返回 SQLITE_OK 并且 NSLog(@"Success to update leftBudget") 被执行。但问题是更新表没有正确执行.. 我不知道程序说 SQLITE_OK 但表没有正确更新..

【问题讨论】:

  • 您应该使用逗号而不是 AND 分隔要更新的列。例如。 UPDATE Travell SET travellName = '%@',货币 = '%@' 等
  • 非常感谢,约翰。你的权利。真可惜……

标签: ios objective-c sqlite


【解决方案1】:

在UPDATE语句中,要设置的多个列不能用AND分隔,而是用逗号分隔。

SET travellName = '...' and currency = '...' and ... 被解释为将单列travellName 设置为表达式'...' and currency = '...' and ... 的值,其中AND 是布尔运算符;此表达式的最终值为 0 或 1。

(当旅行名称包含引号时,这会爆炸。您应该使用sqlite3_mprintf 正确格式化字符串。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多