我使用以下代码从Sqlite3数据库中读取行。
if(sqlite3_open([[AppHelper getDatabasePath] UTF8String], &database) == SQLITE_OK)
{
const char *sqlStatement = "select * from customers";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSString *firstName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 1)];
NSLog(@"%@",firstName);
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
代码不会进入if(sqlite3_prepare_v2 ....
。条件。
谁能告诉我我做错了什么?我将.sql文件放在我的文档目录中,它包含一条记录。
更新1:
我在模拟器中运行应用程序,并将myDatabase.sql文件放在Supporting Files文件夹中。
更新2:
错误是“没有这样的表客户”,但我可以看到我在数据库中有customer表。我使用FireFox Sqlite Manager查看customers表。
答案 0 :(得分:1)
解决方案是关闭/重置模拟器,因为模拟器挂在空数据库上。重置模拟器内容后,每个人都重新开始工作!
答案 1 :(得分:0)
哦,是的,当你更改sqlite文件时,你总是需要删除应用程序并重新安装。或者,如果要升级新表,可以“更改表”旧文件或将所有数据移动到新文件。