Как обновить строку базы данных sqlite3 значением текстового поля в swift? - PullRequest
0 голосов
/ 16 марта 2020

Я пробовал следующий запрос 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)
...