【问题标题】:Update Data Into SQLite Database将数据更新到 SQLite 数据库
【发布时间】: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


【解决方案1】:

我提交了 3 个不同的选项

第一个//it match up ur answer

update BusinessCardAppOneTable set NamorTitofImginTxtFld = ?, TxtofTxtView = ?, Date = ?,  Time =?    where id = 5   // here u need to identify your id, if it is correct it surely update

第二个//it is related to your answer

是的,您可以使用以下参数化查询:-

NSString *sqlString = @"update BusinessCardAppOneTable set NamorTitofImginTxtFld = ?, TxtofTxtView = ?, Date = ?,  Time =?    where id = ?";

sqlite3_stmt *stmt;
if(sqlite3_prepare(database, [sqlString UTF8String], -1, &stmt, NULL) != SQLITE_OK)
{
  //Handle Error
}


if(sqlite3_bind_text(stmt, 1, [record.name UTF8String],[record.type UTF8String],[record.state UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK)
{
  // Handle Error
}
if(sqlite3_bind_int(stmt, 2, record.key) != SQLITE_OK)
{
  // Handle Error
}


if (sqlite3_step(statement) != SQLITE_DONE)
{
  // Handle Error
}

您的参数化代码已准备就绪。

第三选择

你点击链接Sqlite3 update query not working in ios app

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多