我正在实现一些用于读取和编写sqlite3数据库的代码。 读取数据库工作正常,显示行根本不是问题。问题是插入一个新行。由于某种原因,它只是不起作用,sqlite在执行SQL后不会返回错误。
if( sqlite3_prepare_v2(db, "INSERT INTO `items` (`itemID`, `itemName`) VALUES (2, 'helloWorld?')", -1, &statement, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error, unable to modify database",sqlite3_errmsg(db));
}
db and statement:
sqlite3 *db = [RootViewController newDatabaseConnection];
sqlite3_stmt *statement = nil;
另外我知道有一个名为核心数据的框架,所以请不要回答使用核心数据
数据库文件“AppName.sqlite3”不在应用程序的主文件夹中,而是在文档文件夹中,因此应可编辑
我的SQL语法没问题,尝试使用命令行添加项目。那里的一切都很好。
答案 0 :(得分:1)
据我所知,准备一个声明实际上并没有执行它。您需要调用sqlite3_step()
并传递预准备语句,以便执行SQL。
作为指南,您应该准备语句并逐步完成结果,然后在完成后完成语句。然后,当您完成数据库连接时,可以将其关闭。