Вы не можете вставить и где в том же заявлении. У вас есть 3 варианта:
- замените 'вставить или заменить' на 'обновить', если вы хотите изменить уже существующие строки.
- удалить инструкцию where для добавления новых строк.
- если вы не уверены, что строка уже существует, сначала выполните оператор 'select', а затем выполните if else с двумя вышеуказанными параметрами.
вариант 1 будет выглядеть так:
NSString * update = [NSString stringWithFormat:@"UPDATE LIST SET COUNT = ?, NAME = ?, DATE = ?, IDNUM = ? WHERE IDNUM = '%i'", [accesID integerValue]];
вариант 2 будет выглядеть так:
NSString * update = [NSString stringWithFormat:@"INSERT OR REPLACE INTO LIST (COUNT, NAME, DATE, IDNUM) VALUES (?, ?, ?, ?)"];
вариант 3 будет выглядеть так:
NSString * update = [NSString stringWithFormat:@"SELECT * FROM LIST WHERE IDNUM = '%i'", [accessID integerValue]];
sqlite3_stmt *stmt;
int rc = sqlite3_prepare_v2(db, [update UTF8String], -1, &stmt, nil);
if (rc == SQLITE_OK) {
if (sqlite3_step(stmt) == SQLITE_ROW) {
update = [NSString stringWithFormat:@"UPDATE LIST SET COUNT = ?, NAME = ?, DATE = ?, IDNUM = ? WHERE IDNUM = '%i'", [accessID integerValue]];
}
else{
update = [NSString stringWithFormat:@"INSERT OR REPLACE INTO LIST (COUNT, NAME, DATE, IDNUM) VALUES (?, ?, ?, ?)"];
}
}