我正在尝试在我的Android应用中使用SQLite数据库。它曾经工作(我发誓我没有改变任何东西),显然发生了一些变化,因为我的代码现在在查询数据库时没有返回任何内容。当我逐步完成代码本身时,我注意到只要我的DBHelper调用this.getReadableDatabase()
,数据库就有mStackTrace
的DatabaseObjectNotClosedException,即使这是我第一次在应用程序中打开数据库本身。奇怪的是,这个错误实际上从未被抛出,甚至可能不是我的问题,但我认为这是一个很好的起点。
代码:
{snip}
我不是100%在这里发生了什么。该类应该将数据库从res / assets复制到本地数据文件夹,它似乎工作,但数据库要么不正确,要么最终被指向错误的东西,因为没有返回任何行。想法?
编辑:附加更新;我查看了存储文件的数据/目录,我找到了两个单独的数据库,一个在files/
,另一个在databases/
。 files/
具有正确的数据库,所有数据都保持不变,databases/
只是android的空白数据库设置。我的代码应该在files/
中调用数据库,但也许不是?
编辑:已解决。我发现了问题,它与我的DBhelper无关。显然,我在该项目上的队列编辑了一个他不应该进行测试的领域,并忘了将其更改回来。原来我正在制作的SQL调用有问题。 谢谢你的帮助!
答案 0 :(得分:1)
确保您只使用SQLiteOpenHelper
的一个实例,如此blog post中所述。我打赌问题是你已经意外地创建了这个类的多个实例而忘记关闭其中一个。您也可以执行Sam的建议并非常小心地关闭您创建的SQLiteOpenHelper
个实例。但是,在我看来,在整个应用程序的生命周期中使用相同的SQLiteOpenHelper
更加清晰。
答案 1 :(得分:0)
编辑:已解决。我发现了问题,它与我的DBhelper无关。显然,我在该项目上的队列编辑了一个他不应该进行测试的领域,并忘了将其更改回来。原来我正在制作的SQL调用有问题。谢谢你的帮助!