I am trying to save data into an sqlite database with the below function.
func insertSpecieDetail(_ specieId: Int)
{
//
// Create a temporary SpecieDetailModel for storing our values from the query.
//
let specieDetail: SpecieDetailModel = SpecieDetailModel()
//
// Create an instance of our statement for SQLite to use.
//
var statement: OpaquePointer? = nil
let update:String = String(format:SQL.InsertUserUpdates, specieId)
if sqlite3_prepare_v2(self.database, update, -1, &statement, nil) == SQLITE_OK {
sqlite3_bind_text(statement, 1, specieDetail.userCommonName, -1, nil);
sqlite3_bind_text(statement, 2, specieDetail.userCommonNameFR, -1, nil);
sqlite3_bind_text(statement, 3, specieDetail.userCommonNameES, -1, nil);
sqlite3_bind_text(statement, 4, specieDetail.userCommonNameDE, -1, nil);
sqlite3_bind_text(statement, 5, specieDetail.userNotes, -1, nil);
if sqlite3_step(statement) == SQLITE_DONE {
print("Successfully inserted row.")
} else {
print("Could not Update row.")
}
}
sqlite3_finalize(statement)
}
SQL.InsertUserUpdates =
"INSERT INTO RL_Species (user_common_name, user_common_name_fr, user_common_name_es, user_common_name_de, user_notes) VALUE (?, ?, ?, ?, ?)" + "WHERE RL_Species.id = %d"
Not getting any errors, but the system is skipping over after the command:
if sqlite3_prepare_v2(self.database, update, -1, &statement, nil) == SQLITE_OK
On this same line, I checked what "update" equals and is below
"INSERT INTO RL_Species (user_common_name, user_common_name_fr, user_common_name_es, user_common_name_de, user_notes) VALUE (?, ?, ?, ?, ?)WHERE RL_Species.id = 8"
so it seems that the string is finding the specieId OK.
What am I missing?
UPDATE: Found the VALUE vs. VALUES error, but still am getting an error "near" WHERE.
func insertSpecieDetail(_ specieId: Int)
{
//
// Create a temporary SpecieDetailModel for storing our values from the query.
//
let specieDetail: SpecieDetailModel = SpecieDetailModel()
//
// Create an instance of our statement for SQLite to use.
//
var statement: OpaquePointer? = nil
let update = "INSERT INTO RL_Species (user_common_name, user_common_name_fr, user_common_name_es, user_common_name_de, user_notes) VALUES ('\(specieDetail.commonName)', '\(specieDetail.commonNameFR)', '\(specieDetail.commonNameES)', '\(specieDetail.commonNameDE)', '\(specieDetail.userNotes)') WHERE RL_Species.id = '\(specieId)';"
if sqlite3_prepare_v2(database, update, -1, &statement, nil) == SQLITE_OK {
if sqlite3_step(statement) == SQLITE_DONE {
print("Successfully inserted row.")
} else {
print("Could not Update row.")
}
} else {
// forces SQLite to send error message
let errorMessage = String.init(validatingUTF8: sqlite3_errmsg(database))!
print("update failed! \(errorMessage)") }
sqlite3_finalize(statement)
}