【发布时间】:2014-06-21 21:22:35
【问题描述】:
我想将数据更新到 sqlite db。我尝试并遵循了很多更新数据的链接和方法。但是所有这些都不适合我。
当我插入我的数据时,在 db 中插入的数据没有问题。
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO BusinessCardAppOneTable (NamorTitofImginTxtFld ,TxtofTxtView ,ImaGe,Location,Date,Time)VALUES(?,?,?,?,?,?);"];
注意:对于图像,我在 DB 中创建了图像文件夹(路径)。
然后我获取这些数据并将这些数据从 DB 显示到 tableview。
然后我编辑了 NamorTitofImginTxtFld、TxtofTxtView、日期、时间(这些在编辑视图控制器中 - 我从 tableview 获取图像、位置、日期、时间、NamorTitofImginTxtFld、TxtofTxtView(获取数据))
之后,我编辑了 NamorTitofImginTxtFld、TxtofTxtView、日期和时间。此外,如果我想设置日期和时间,我应该转到 REMAINDER VIEW CONTROLLER(从编辑视图控制器的剩余按钮到剩余视图控制器)。我在哪里设置日期和时间选择器。一旦我设置它并返回编辑视图控制器,我就可以看到已编辑的部分。
所以我的更新查询是
NSString *updateSQL = [NSString stringWithFormat:@"UPDATE BusinessCardAppOneTable SET NamorTitofImginTxtFld = ?, TxtofTxtView = ?,Date = ? WHERE Time =? "];
如果我只编辑 NamorTitofImginTxtFld 和 TxtofTxtView,这些只会在 db 中更新。但是如果我编辑所有 NamorTitofImginTxtFld ,TxtofTxtView 以及日期和时间,所有这些都不会更新。
任何人都可以解释一下数据库更新以及如何成功更新db中的这4列?
【问题讨论】:
-
也许您可以分享如何将值绑定到
?占位符。您是在使用sqlite_bind_xxx函数还是使用诸如 FMDB 之类的东西(简化了流程)?顺便说一句,在这种情况下,不需要(或不需要)stringWithFormat语法。 -
是的,我使用 sqlite_bind_text
-
帮我抢。我什么都没拿到。
-
我会查看
sqlite3_changes以查看更新了多少行。如果为零,则它一定与 SQL 的WHERE子句不匹配。或者sqlite3_prepare_v2中可能存在错误(我假设您正在检查该返回码以确保您得到SQLITE_OK)。我还会检查sqlite3_step返回码,以确保您也得到了SQLITE_DONE。根据迄今为止提供的内容,很难看出问题可能出在哪里。 -
哪里的意思是匹配字段?
标签: ios objective-c sqlite