在更新记录然后关闭数据库时出现错误。 插入和选择时未发生问题。
这是我更新记录和关闭数据库的方法。
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
}
并且我正在关注控制台输出。
错误关闭数据库
关闭数据库失败:由于未完成的语句或未完成的备份而无法关闭
我正在完成更新语句,尽管我不知道该错误是如何发生的。
请帮我解决这个问题。
预先感谢。
答案 0 :(得分:0)
你需要在做完 tsql 过程后完成你的查询语句...
var queryStatement: OpaquePointer? = nil
..
..
sqlite3_finalize(queryStatement)