【问题标题】:getting error while closing sqlite db in ios在 ios 中关闭 sqlite db 时出错
【发布时间】:2019-04-19 07:58:34
【问题描述】:

我在更新记录然后关闭数据库时遇到错误。 插入和选择时未发生问题。

这是我更新记录和关闭数据库的方法。

func updateNumber(_ number: String, withCountryCode countryCode: String, forId id:String)
{
    var statement: OpaquePointer? = nil
    if sqlite3_prepare_v2(db, "update number_table Set number = ?, countryCode = ? Where id=?", -1, &statement, nil) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("error preparing update: \(errmsg)")
    }
    if sqlite3_bind_text(statement, 1, number, -1, SQLITE_TRANSIENT) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("failure binding number: \(errmsg)")
    }
    if sqlite3_bind_text(statement, 2, countryCode, -1, SQLITE_TRANSIENT) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("failure country code: \(errmsg)")
    }
    if sqlite3_bind_text(statement, 3, id, -1, SQLITE_TRANSIENT) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("failure binding id: \(errmsg)")
    }
    if sqlite3_step(statement) != SQLITE_DONE {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("failure updating record: \(errmsg)")
    }
    if sqlite3_finalize(statement) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("error finalizing prepared statement: \(errmsg)")
    }
    statement = nil
}
func closeDB()
{
    if sqlite3_close(db) != SQLITE_OK {
        print("error closing database")
        let errmsg = String(cString: sqlite3_errmsg(db))
        print("failure closing database: \(errmsg)")
    }
    db = nil
}

我得到以下控制台输出。

关闭数据库时出错
关闭数据库失败:由于未完成的语句或未完成的备份而无法关闭

我正在完成更新声明,但我不知道这个错误是如何发生的。
请帮我解决这个问题。
提前致谢。

【问题讨论】:

  • 您未共享的其他一些功能可能未完成准备好的语句。
  • 我已经确定了所有准备好的声明。此外,调用此更新方法时也会发生此错误。

标签: ios swift database sqlite


【解决方案1】:

您需要在完成 tsql 过程后完成您的查询语句...

var queryStatement: OpaquePointer? = nil
..
..
sqlite3_finalize(queryStatement)

【讨论】:

  • 请看我在问题部分的评论
猜你喜欢
  • 2011-06-01
  • 2013-05-21
  • 1970-01-01
  • 2015-04-27
  • 2018-11-24
  • 2011-09-26
  • 2017-01-28
  • 1970-01-01
  • 2017-12-29
相关资源
最近更新 更多