【问题标题】:sqlite update - issuesqlite 更新 - 问题
【发布时间】:2013-09-27 06:38:19
【问题描述】:

我在按钮上有以下代码,单击该代码时会根据 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);

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

【问题讨论】:

    标签: objective-c database sqlite sql-update


    【解决方案1】:

    必须检查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 ...;
    }
    

    此外,您不得在sql1 上致电sqlite3_exec。 此外,COMMIT 必须在sqlite3_finalize 之后执行,如果您还没有执行BEGIN,则它是无用的。 (您必须检查sqlite3_exec 是否有错误。)

    【讨论】:

    • 谢谢。我会检查并告诉你进展如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多