Я пытаюсь добавить новую запись в свою базу данных, но она не работает. Нет никаких ошибок, брошенных, и код, который, как предполагается, выполняется после того, как выполнения вставки, означая нет никаких ошибок с запросом. Но тем не менее, ничто не добавляется к базе данных. Я попробовал и подготовленные операторы и более простой sqlite3_exec, и это - тот же результат.
Я знаю, что моя база данных загружается, потому что информация для tableview (и последующий tableviews) загружается из базы данных. Соединение не является проблемой.
Кроме того, журнал sqlite3_last_insert_rowid (дб) возвращает корректное число для следующей строки. Но тем не менее, информация не сохранена.
Вот мой код:
db = [Database openDatabase];
NSString *query = [NSString stringWithFormat:@"INSERT INTO lists (name) VALUES('%@')", newField.text];
NSLog(@"Query: %@",query);
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE){
NSLog(@"You created a new list!");
int newListId = sqlite3_last_insert_rowid(db);
MyList *newList = [[MyList alloc] initWithName:newField.text idNumber:[NSNumber numberWithInt:newListId]];
[self.listArray addObject:newList];
[newList release];
[self.tableView reloadData];
sqlite3_finalize(statement);
}
else {
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(db));
}
}
[Database closeDatabase:db];
Снова, никакие ошибки не были брошены. Готовить и операторы шага возвращают SQLITE_OK и SQLITE_DONE соответственно, все же ничего не происходит.
Любая справка ценится!
Вы должны зафиксировать транзакцию после вставки с помощью оператора COMMIT;
.