Android Room数据库文件为空

Kus*_*gla 17 sql android android-room

在android中使用room for database.当我试图在sqlviewer中查看数据时,在数据库文件Myapp.db文件中找不到表是空的.数据/数据/包/数据库/ Myapp.db

kos*_*sas 60

转到文件夹数据/数据/包/数据库/必须有三个文件.db,.db-shm,.db-wal,所有这三个文件复制到一个位置,然后打开你的Myapp.db打开数据库文件这两个额外的文件需要

  • 做同样的事情,但没有找到表 (3认同)
  • 我现在也尝试过,因此在保存文件时,android studio 中似乎存在某种错误,因为它有时会工作,有时会显示空数据库。我所做的保存了所有三个文件打开的 .db 文件它是空的所以我关闭了 db 编辑器删除了所有再次保存的文件并打开然后它是所有数据 (2认同)

Avi*_*aun 19

在android studio 3.1.*

在工具窗口栏中点击" Device File explorer"一般你可以在屏幕的右下角找到它

打开目录 data/data/your-application-package/databases

使用新架构3文件在数据库目录中创建

your-database-name
your-database-name-shm
your-database-name-wal
Run Code Online (Sandbox Code Playgroud)

你必须在同一目录中导出所有3

然后在任何sqlite浏览器中打开第一个文件(仅使用your-database-name).

现在你可以看到你的所有数据.......

your-database-name-shm
your-database-name-wal
Run Code Online (Sandbox Code Playgroud)

如果只打开数据库文件,则打开db文件需要这两个额外的文件,而不是在该文件中找不到任何表


Dag*_*mar 8

确保在退出应用程序时关闭数据库,这将确保提交所有未完成的事务:

@Override
protected void onDestroy() {
    super.onDestroy();

    // close the primary database to ensure all the transactions are merged
    MyAppDatabase.getInstance(getApplicationContext()).close();
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 Android Studio 中的设备文件资源管理器(在 /data/data/<your app package name>/databases 下查看)从您的设备复制数据库。

您还可以强制执行 WAL 检查点而不是关闭数据库,但在我看来,此选项更容易(除非您尝试以编程方式或类似方式在应用程序中备份数据库)并且关闭数据库是一个好主意(即使在 Android Room 文档中没有真正提到它)。

在此处阅读有关 sqlite WAL 的更多信息:https : //www.sqlite.org/wal.html


Wha*_*rps 5

我保存了整个文件夹,就是这样,我可以浏览表格。在此处输入图片说明