Я пробовал следующий запрос sqlite3, и, хотя он успешно выполняется, значение строки соответствующей таблицы не обновляется. Есть идеи, почему это происходит? accountTxtField.text - это ввод значения текстового поля. Когда я читаю таблицу БД после этого запроса на обновление, она все равно печатает старое значение БД, которое было там и не было обновлено.
var dbPointer:OpaquePointer?
func openDatabase() -> OpaquePointer?
{
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent(self.dbPath)
var db: OpaquePointer? = nil
if sqlite3_open(fileURL.path, &db) != SQLITE_OK
{
print("error opening database")
return nil
}
else
{
print("Successfully opened connection to database at \(self.dbPath)")
return db
}
}
dbPointer = openDatabase()
let updateStatementString = "UPDATE accountdbclass SET prodDesc = '\(String(describing: accountTxtField.text))' WHERE accNo = 8003732227;"
var updateStatement: OpaquePointer?
if sqlite3_prepare_v2(dbPointer, updateStatementString, -1, &updateStatement, nil) ==
SQLITE_OK {
sqlite3_bind_text(updateStatement, 13, accountTxtField.text, -1, nil)
if sqlite3_step(updateStatement) == SQLITE_DONE {
print("\nSuccessfully updated account db row. '\(accountTxtField.text)')
} else {
print("\nCould not update account db row.")
}
} else {
print("\nUPDATE statement is not prepared for account db")
}
sqlite3_finalize(updateStatement)