0

我正在尝试在我的 android 应用程序中使用 SQLite 数据库。它曾经可以工作(我发誓我没有改变任何东西),并且显然发生了一些变化,因为我的代码现在在查询数据库时没有返回任何内容。当我单步执行代码本身时,我注意到只要我的 DBHelper 调用this.getReadableDatabase()数据库就有一个mStackTraceDatabaseObjectNotClosedException,即使这是我第一次在应用程序本身中打开数据库。奇怪的是,这个错误实际上从未被抛出,甚至可能不是我的问题,但我认为这是一个很好的起点。

代码:
{snip}

我不是 100% 知道这里到底发生了什么。该类应该将数据库从 res/assets 复制到本地数据文件夹,它似乎可以工作,但数据库要么不正确,要么最终被指向错误的东西,因为没有返回任何行。想法?

编辑:附加更新;我查看了存储文件的 data/ 目录,发现了两个独立的数据库,一个files/databases/. files/具有所有数据完整的正确数据库,并且databases/只是 android 的空白数据库设置。我的代码应该调用数据库files/,但也许不是?

编辑:已解决。我发现了问题,它与我的 DBhelper 无关。显然,我在该项目中的团队编辑了一个他不应该用于测试的字段,却忘记了将其改回来。原来我正在做的 SQL 调用是错误的。谢谢您的帮助!

4

2 回答 2

1

确保您只使用 的一个实例SQLiteOpenHelper,如本文中所述。我敢打赌,问题是您不小心创建了该类的多个实例并且忘记关闭其中一个。您也可以按照 Sam 的建议执行操作,并非常小心地关闭SQLiteOpenHelper您创建的实例。但是,在我看来,SQLiteOpenHelper在整个应用程序的生命周期中使用相同的东西要干净得多。

于 2012-10-09T22:17:43.760 回答
0

编辑:已解决。我发现了问题,它与我的 DBhelper 无关。显然,我在该项目中的团队编辑了一个他不应该用于测试的字段,却忘记了将其改回来。原来我正在做的 SQL 调用是错误的。谢谢您的帮助!

于 2012-10-29T16:49:18.413 回答