我想立即更新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(@"成功更新leftBudget")被执行。但问题是更新表没有正确执行.. 我不知道程序说SQLITE_OK但是表格没有正确更新..
答案 0 :(得分:1)
在UPDATE语句中,要设置的多个列必须用AND分隔,而不能用逗号分隔。
SET travellName = '...' and currency = '...' and ...
被解释为将单列travellName
设置为表达式'...' and currency = '...' and ...
的值,其中AND是布尔运算符;该表达式的最终值为0或1。
(当旅行名称包含引号时,这会爆炸。您应该使用sqlite3_mprintf正确格式化字符串。)