Ваша главная проблема в том, что вы никогда не вызываете sqlite3_step
, чтобы фактически выполнить запрос.
Но у вас есть и другие проблемы. Вам нужно позвонить sqlite3_close
, если вы пытаетесь открыть базу данных независимо от того, подготовлена выписка или нет. Вам также нужно позвонить по номеру sqlite3_finalize
в подготовленном заявлении после того, как с ним покончено. И вы передаете неверное значение параметра для индекса в sqlite3_bind_int
.
func DeleteRowDatabase(inputId : Int32) -> Bool {
var db: OpaquePointer? = nil
var returnCode : Bool = false
if sqlite3_open(self.databasePath, &db) == SQLITE_OK {
print("Successfully opened connection to database at \(self.databasePath)")
// step 16d - setup query - entries is the table name you created in step 0
var deleteStatement: OpaquePointer? = nil
var deleteStatementString : String = "delete from entries where ID = ?"
if sqlite3_prepare_v2(db, deleteStatementString, -1, &deleteStatement, nil) == SQLITE_OK {
sqlite3_bind_int(deleteStatement, 1, inputId)
if sqlite3_step() == SQLITE3_DONE {
returnCode = true
}
sqlite3_finalize(deleteStatement)
}
}
sqlite3_close(db)
return returnCode
}