Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的sqlite查询(更新)在iOS中似乎不起作用_Ios_Objective C_Sqlite - Fatal编程技术网

我的sqlite查询(更新)在iOS中似乎不起作用

我的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

我想立即像这样更新sqlite表中的一条记录

TravelName:self.savedName->self.editedName

货币:self.savedCurrency->self.editedCurrency

速率:self.savedRate->self.editedRate

开始预算: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,但表没有正确更新。

在update语句中,要设置的多个列必须用逗号分隔,而不是用AND分隔

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


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

您应该用逗号分隔要更新的列,而不是逗号。例如,更新Travel SET TravelName='%@',currency='%@',等等。非常感谢,John。你说得对。真遗憾。。。