我的sqlite查询(更新)在iOS中似乎不起作用
我想立即像这样更新sqlite表中的一条记录 TravelName:self.savedName->self.editedName 货币:self.savedCurrency->self.editedCurrency 速率:self.savedRate->self.editedRate 开始预算:self.savedBudget->self.editedBudget leftAssets:self.savedLeftAssets->self.editedLeftAssets 在这里输入代码我的sqlite查询(更新)在iOS中似乎不起作用,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我想立即像这样更新sqlite表中的一条记录 TravelName:self.savedName->self.editedName 货币:self.savedCurrency->self.editedCurrency 速率:self.savedRate->self.editedRate 开始预算:self.savedBudget->self.editedBudget leftAssets:self.savedLeftAssets->self.editedLeftAssets 在这里输入代码 NS
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(@“成功更新leftBudget”)。但问题是更新表没有正确执行。。
我不知道程序说SQLITE_OK,但表没有正确更新。在update语句中,要设置的多个列必须用逗号分隔,而不是用AND分隔
SET travelname=''.'和currency=''.'和…
被解释为将单列travelname
设置为表达式'.'和currency='.'和…
的值,其中and是一个布尔运算符;此表达式的最终值为0或1
(当旅行名称包含引号时,这会爆炸。您应该使用来正确格式化字符串。)您应该用逗号分隔要更新的列,而不是逗号。例如,更新Travel SET TravelName='%@',currency='%@',等等。非常感谢,John。你说得对。真遗憾。。。