Android Studio 数据库检查器始终将数据库显示为“已关闭”

Wam*_*miq 15 android android-studio android-room database-inspector

我正在尝试在 Android Studio 中使用数据库检查器。为什么我在设备上运行应用程序,它的检查员总是将我的应用程序数据库(在图像中突出显示)显示为“已关闭”。

是否有任何解决方法或我在设置过程中遗漏了什么?

在此处输入图片说明

Ish*_*oid 19

我遇到了同样的问题,我尝试了很多方法但没有成功,最后在我知道这个问题的一天后。问题是我正在使用加密的 SQLite 数据库(自定义openHelperFactory)。

对我来说,这是删除openHelperFactory后的问题

它工作得很好,我的答案可能对你没有用,但肯定对某人有用。

谢谢


小智 16

  1. 单击关闭数据库图标
  2. 启用(保持打开)=>在此输入图像描述
  3. 执行一些与数据库相关的操作(例如获取...的列表)
  4. 数据库保持开放模式


exe*_*nza 6

更新。上次我遇到这个烦人的问题时为我解决了这个问题Invalidate cache/Restart

在调试模式下运行应用程序 在此处输入图片说明 (Win:Shift+F9 或 Mac:Control+D)有时对我来说很神奇。

不确定这是否是一个错误。android文档没有提到这一点,所以我想它应该只在正常模式下工作,但由于某种原因不适合我..

我使用(Android Studio 4.2 beta 3)。属性minSdkVersion设置为 27。

我不使用 Room 或任何其他 ORM,只是一些简单的查询。

切换“保持数据库连接打开”似乎也没有帮助。

在正常模式下:

在此处输入图片说明

在调试模式下(我想要的):

在此处输入图片说明

值得注意的是,即使在我停止在调试模式下运行的应用程序后,它仍然继续工作(查询数据库等):

在此处输入图片说明


tiz*_*tiz 6

对我来说,“关闭”的原因很可能是我使用的框架(Expose/SQLDroid)在数据库连接不工作时关闭它。

因此,即使应用程序中一切正常,数据库在数据库检查器想要查看它时也已关闭。

添加下面的行基本上解决了问题。我不会将其放入生产代码中,因为我还没有检查详细情况,但它在开发过程中有所帮助。

val db = openOrCreateDatabase("testdb.db", MODE_PRIVATE, null)
// db.close() -- DO NOT USE THIS
Run Code Online (Sandbox Code Playgroud)

重要的是不要使用db.close()。当db.close()在那里时,数据库检查器显示数据库已关闭。当它不存在时,数据库检查器通常可以工作。