0

我在按钮上有以下代码,单击该代码时会根据 id 值 jobNumber 更新字段。我无法理解为什么数据库没有得到更新。如果有人可以在这里帮助我,我将不胜感激:

似乎缺少什么?提前致谢。Documents 目录有 777 权限,所以 db 文件。

代码:

  -(IBAction)saveJob:(id)sender
   {
    sqlite3_stmt    *statement = NULL;
    const char *sql1 ="UPDATE JOB SET JOBTITLE =?, COMPANY=?, ADDRESS =?, PHONE=?     WHERE jobNumber=?";


    sqlite3_prepare_v2(db, sql1, -1, &statement, NULL);
    sqlite3_bind_text(statement, 1,[self.jobTitle.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 2,[self.Company.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 3,[self.Address.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(statement, 4,[self.phoneNumber.text UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_int(statement, 5,[self.jobNumber.text intValue]);
    sqlite3_exec(db, sql1, NULL, NULL, NULL);
    sqlite3_exec(db, "COMMIT", NULL, NULL, NULL);
    if(SQLITE_DONE != sqlite3_step(statement))
    {
        NSLog(@"Error in updating data"); ====> Code always comes here. 
    }
    sqlite3_finalize(statement);
    sqlite3_close(db);

我有另一个插入行的语句,它可以工作。但更新不是

4

1 回答 1

0

必须检查的返回值sqlite3_prepare_v2

if (sqlite3_prepare_v2(db, sql1, -1, &statement, NULL) != SQLITE_OK)
{
    NSLog(@"error...: %s", sqlite3_errmsg(db));
    sqlite3_finalize(statement);
    sqlite3_close(db);
    return ...;
}

此外,您不得调用sqlite3_exec. sql1此外,COMMIT必须在之后执行sqlite3_finalize,如果您没有执行 ,则无用BEGIN。(您也必须检查sqlite3_exec错误。)

于 2013-09-27T07:22:17.190 回答