查看使用 Room Persistence Library 创建的数据库的内容

Posted

技术标签:

【中文标题】查看使用 Room Persistence Library 创建的数据库的内容【英文标题】:View contents of database created with Room Persistence Library 【发布时间】:2017-11-09 19:03:25 【问题描述】:

有没有更简单的方法可以在 android Studio 中?

【问题讨论】:

easier way 与哪种方式比较? 与使用 DDMS 或通过 adb shell 等旧方法相比。 DDMS 冻结了我的计算机,使用 adb 需要大量工作。我认为必须有更简单的方法,因为它最近由 Google 发布 不在android studio,但是这个github.com/facebook/stetho是facebook开发的最好的Android Debug bridge,从中可以看到你的app数据库,甚至sharedpreferences等。 【参考方案1】:

在较旧的 Android Studio 版本中:

Emulator -> Android Studio -> Device File Explorer -> /data/data/$packageId/databases/ -> Save As -> https://sqlitebrowser.org/

在以后的 Android Studio 版本(3.5+)中:

View -> Tool Windows -> Device File Explorer -> /data/data/$packageId/databases/ -> Save As -> https://sqlitebrowser.org/

【讨论】:

不允许操作 @jonney 此方法仅适用于有根设备或模拟器。 这也应该适用于安装了可调试应用程序的非 root 手机,但三星设备除外 这应该是公认的答案 - 无需下载软件或 root 设备即可获取数据库的最简单方法。 @JakubJabłoński 在模拟器上启动您的应用,然后在 Android Studio 中打开设备文件资源管理器【参考方案2】:

在 android studio 3.1.* 中

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

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

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

your-database-name
your-database-name-shm
your-database-name-wal

您必须将所有 3 个导出到同一目录中

然后在任何 sqlite 浏览器中打开第一个文件(即仅包含您的数据库名称)。

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

your-database-name-shm
your-database-name-wal

打开db文件需要这两个额外的文件 如果您只打开数据库文件,那么您将不会在该文件中找到任何表

【讨论】:

如何找出“/data/data/...”路径在我的文件系统上的位置? 这个答案的作者实际上显示了“设备文件资源管理器”的位置,这为新手节省了一些时间;因此+1 @AwaisHussain:使用context.getDatabasePath("your-db-name.db") 按 shift 两次搜索所有地方,如果设备文件资源管理器已从您的 android studio 的右下角删除,则输入设备文件资源管理器。 复制所有 3 个文件很重要。仅复制具有数据库名称的那个,将导致数据不同步,即使使用的 SQL 管理器用表正确打开它并创建自己的 shm 和 wal。【参考方案3】:

Android Studio 正式支持Database Inspector

之前,Database Inspector 开始包含在 Android Studio 4.1 canary 通道中,现在它已经内置在最新版本的 Android Studio Arctic Fox 中。

现在,Database Inspector 位于 App Inspection 选项卡下。 您必须选择连接的设备,然后需要选择要检查数据库的包名称。

左侧显示可用表格,需要双击查看表格详情,右侧显示。。

选项 1

您可以使用Android-Debug-Database,您可以从浏览器中对您的数据进行CRUD,然后您可以从浏览器中查看您的偏好数据。

选项 2

如果您不想从浏览器使用并且必须检查其他文件,需要检查您的数据更改,请使用 Genymotion 模拟器。所以您必须根您的模拟器。尝试根您的模拟器,请查看https://***.com/a/44039429/2772552。 如果您不满意,请告诉我。

【讨论】:

可以查看数据库文件,但无法查看数据库中创建的表。两种方法我都试过了 经过一天的工作终于找到了解决方案。从模拟器中导出“userdatabase”、“userdatabase-shm”和“userdatabase-wal”文件并在sqlite查看器中打开“userdatabase”文件 如果.db在内部目录,你不能看到那里,手动复制.db文件到外部存储目录,它会为你工作 我遇到了方法 1 的问题,它导致其他异步任务的读/写问题。导致应用冻结。 is @chandan-sharma 回答了这个答案需要更新:随着 Android Studio 4.1 Canary 的最新版本,Android Studio 提供了名为 Database Inspector 的新工具。您可以使用此 Database Inspector 工具查看数据库文件及其内容,也可以编辑数据库内容。【参考方案4】:

下载安装DB Browser for SQLite

在 Android Studio 版本 >= 3.0 中:

通过以下方式打开设备文件资源管理器:

查看 > 工具窗口 > 设备文件资源管理器

在“设备文件资源管理器”中转到:

数据 > 数据 > PACKAGE_NAME > 数据库

其中 PACKAGE_NAME 是您的包的名称(在下面的示例中为 com.edgedevstudio.sample)

右键单击数据库并选择另存为。 将其保存在 PC 上的任意位置。

打开,用于 SQLite 的数据库浏览器并单击“打开数据库”并打开数据库。

在上面的示例中,您应该找到“todolist”而不是 “todolist-shm”或“todolist-wal”

如果不导出 3 个数据库文件(db_name、db_name-shm 和 db_name-wal,其中 db_name = 数据库名称),您将无法读取数据库。

【讨论】:

这就是我要找的……正是需要的!谢谢@EdgeDev【参考方案5】:

我个人使用Android Debug Database

Android Debug Database 是一个强大的数据库调试库 和 Android 应用程序中的共享首选项。

快速入门

将此添加到您应用的 build.gradle

debugImplementation 'com.amitshekhar.android:debug-db:1.0.4'

只需启动应用程序,您将在 logcat 中看到如下条目:

D/DebugDB: Open http://192.168.1.104:8080 in your browser



更多信息请查看githubrepo

【讨论】:

这是最好的方法,因为不需要root设备 哇!惊人的东西!谢谢老兄!! 太棒了。这是我在 Android 上使用过的最好的第三方工具。节省了很多时间。非常尊重开发者【参考方案6】:

为方便起见,请按照以下步骤操作:

    下载SQLiteBrowser程序:Download SQLite for all OS 点击 Android Studio 右下角的“Device Exploler”。 您会看到很多文件。不用担心!跟随路径:data/data/你的应用包名 右键单击“数据库”并在您的计算机中另存为。 打开 SQLiteBrowser 并单击“打开数据库”,然后选择与您的数据库名称同名的文件。 您可以查看文件并选择与您的数据库表名称相同的文件。 最后一步,您可以在“数据库结构”选项附近看到“浏览数据”选项。当您选择它时,您可以看到您的数据库数据。

您可以查看步骤并按照下图中的数字进行操作

【讨论】:

【参考方案7】:

随着Android Studio 4.1 Canary 的最新版本,Android Studio 提供了名为Database Inspector的新工具。

您可以使用此Database Inspector 工具查看数据库文件及其内容,也可以编辑数据库内容。

如果您使用的是Room Persistence,那么它还提供了在Android Studio 中运行@Query 的工具。可以看到@Query注解左侧的运行按钮。

如果您使用的是LiveData,那么它将实时反映数据库内容的变化,

【讨论】:

【参考方案8】:

使用Stetho。

将其作为dependency 添加到您的Android 项目中。

在您的 Application 中调用 Stetho.initializeWithDefaults(this) 并使用 chrome 检查工具查看您的数据库。在您的 chrome URL 栏中输入以下内容:chrome://inspect

快!你可以看到你的Room database

【讨论】:

【参考方案9】:

我通过以下步骤做到了这一点:

1) 从以下链接下载数据库浏览器。

https://sqlitebrowser.org/

2) 从 IDE 转到设备文件资源管理器 & 复制生成的三个文件,如 enter image description here 并选择所有三个文件: 你的分贝,你的分贝-shm,你的分贝沃尔

按 ctrl+shift+s 并将其粘贴到某个文件夹。完成。

3) 最后用 DbBrowser App 打开 your-db。

【讨论】:

谢谢,必须选择所有三个文件:*-db、*-db-shm、*-db-wal【参考方案10】:

借助 Android Studio 4.1 Canary 6 及更高版本,您可以使用新的 Database Inspector 检查、查询和修改应用的数据库。例如,您可以通过修改数据库中的值并在设备上测试这些更改来调试正在运行的应用程序。

https://developer.android.com/studio/preview/features#database-inspector

【讨论】:

这应该是官方的回答。【参考方案11】:
You can see your database table on the DB Browser for SQLite & room DB.

 In android studio 
1. Click on View -> Tool Windows -> Device File Explorer -> data
2. Select your project package name -> database -> select all file and save on desktop

Install **DB browser for SQLITE** 
1. sudo apt-get install sqlitebrowser //write on your terminal for install DB browser
2. install DB browser for sqlite
3. click on Open database and select file where you had saved your data
4. click on Brower Data and see your tables

This is all where i have see my android room database

【讨论】:

【参考方案12】:

在最新版本的 Android Studio 中,您可以在 App Inspection 工具窗口中使用 Database Inspector

转到 App Inspection。然后选择进程。 Database Inspector 现在将显示数据库内容。

【讨论】:

2021 年,使用当前的 Android Studio,这应该是唯一可以接受的答案。【参考方案13】:

您现在可以在 Android Studio 的 Database Inspector 中查看它

下图

Database Inspector Tab in Android Studio

【讨论】:

【参考方案14】:

Database Inspector 在新的 Android Studio 中北极狐 点击App检查 从选项卡中选择数据库检查器 右键单击数据库名称 单击导出为文件 下载后查看DB Browser for SQLiteApplication中的数据库 *注意 Database Inspector 仅在应用程序部署在 API 26 上时才有效

【讨论】:

【参考方案15】:

我最近尝试了Sethto By Facebook。

Stetho 是适用于 Android 应用程序的复杂调试桥。什么时候 启用后,开发人员可以访问 Chrome 开发人员工具功能 Chrome 桌面浏览器的原生部分

你只需要包含它的 gradle 依赖并在 MainApp 中调用。而已。 您可以使用 chrome://inspect/ 访问 chrome 窗口中的所有工具,包括您的 sqlite 数据库。

以下是模拟器上的房间数据库检查的屏幕截图。到目前为止,我只在模拟器中尝试过。

【讨论】:

【参考方案16】:

从设备文件资源管理器中获取您的数据库(3 个文件)后,如 cmets 所述

我真的推荐简单的程序,比如使用“DB Browser for SQLite”https://sqlitebrowser.org/

【讨论】:

【参考方案17】:

谷歌官方: 现在有一种超级简单的方法可以直接从 Android Studio 查看您的 Room DB。这么简单你会笑的=) 看看这个:https://developer.android.com/studio/inspect/database

【讨论】:

【参考方案18】:

在 android studio 中以调试模式查看、编辑、添加和删除您的房间数据库最方便。

在 build.gradle 中实现依赖

debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'

在您的活动中复制粘贴以下代码

public static void showDebugDBAddressLog() 
    if (BuildConfig.DEBUG) 
        try 
            Class<?> debugDB = Class.forName("com.amitshekhar.DebugDB");
            Method getAddressLog = debugDB.getMethod("getAddressLog");
            Object value = getAddressLog.invoke(null);
            Log.d("link", "showDebugDBAddressLogToast: "+(String) value);
         catch (Exception ignore) 

        
    

在 oncreate 中调用 Activity。

showDebugDBAddressLog();

在 AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

在 dubug 模式下运行应用程序

在 logcat 中搜索

link

你在 logcat 中看到了链接

showDebugDBAddressLog: Open http://192.168.1.100:8080 in your browser

在浏览器中打开链接“http://192.168.1.100:8080”。

繁荣你看到你的所有数据库。谢谢

【讨论】:

【参考方案19】:

按照以下 Android 文档进行操作

https://developer.android.com/studio/inspect/database

【讨论】:

以上是关于查看使用 Room Persistence Library 创建的数据库的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Room Persistence Library 与预填充的数据库一起使用?

Android Room Persistence 库和 Kotlin

无法导入 android.arch.persistence.room.testing.MigrationTestHelper

如何使用 Android Room Persistence Library 将 Column 注释为 NOT NULL

从 SQLite 迁移到 Android Room Persistence Library

调用 Rooms inMemoryBuilder 方法时,Room Persistence Library 运行时异常