在Android Studio中查看数据库文件的内容

Sco*_*Zhu 229 android ddms android-sqlite android-studio

自从它发布以来,我一直在使用Android Studio来开发我的应用程序.

一切都很好,直到最近,我必须与检查数据库文件一起调试.由于我不知道如何直接查看数据库,当我调试生成数据库文件时,我必须将数据库文件从手机导出到PC.

为了做到这一点,我必须打开DDMS > File Explorer.一旦我打开DDMS,我就必须重新连接USB,我就失去了调试线程.检查数据库文件后,我必须关闭DDMS并再次重新连接USB以返回调试模式.

这太复杂了.有没有人有更好的方法在Android Studio中执行此操作(我知道它在Eclipse中更容易)?

ojo*_*ifu 282

从Android Studio查看数据库:

编辑:要在仿真器上查看数据库,请按照以下步骤操作(对于实际设备,请滚动到底部):

  1. 下载并安装SQLiteBrowser.
  2. 将数据库从设备复制到PC:

    • Android Studio版本<3.0:

      • 通过开放DDMSTools > Android > Android Device Monitor

      • 点击左侧的设备.
        你应该看到你的申请: 在此输入图像描述

      • 转到文件资源管理器(右侧的其中一个选项卡),转到/data/data/databases 在此输入图像描述

      • 只需单击它即可选择数据库.

      • 转到Android Device Monitor窗口的右上角.点击" 从设备中提取文件 "按钮: 在此输入图像描述

      • 将打开一个窗口,询问您要保存数据库文件的位置.将它保存在PC上的任何位置.

    • Android Studio版本> = 3.0:

      • 打开设备文件浏览器通过View > Tool Windows > Device File Explorer

      • 转到data > data > PACKAGE_NAME > database,PACKAGE_NAME是您的包的名称(在上面的示例中是com.Movie)

      • 右键单击数据库并选择Save As....将它保存在PC上的任何位置.

  3. 现在,打开您安装的SQLiteBrowser.单击" 打开数据库 ",导航到保存数据库文件的位置,然后打开.您现在可以查看数据库的内容.


要在移动设备上查看数据库:

转到 Github存储库并按照自述文件中的说明操作,以便能够在您的设备上查看数据库.你得到的是这样的:

在此输入图像描述

而已.但是,在发布应用程序之前,您应该撤消所有这些步骤.

  • / data不会在Device Monitor的文件浏览器中展开,我猜它是不可访问的,因为列出/ data或/ data/data目录的条目需要superUser访问.我仍然可以通过具有su权限的adb shell访问我的数据库文件.知道如何在文件管理器中获取su访问权限吗? (26认同)
  • 它可以工作,但模拟器必须运行不超过API 23.如果你使用API​​ 25,那么文件浏览器中没有内容 (11认同)
  • 这对我来说是正确的答案,因为使用sqlitebrowser工具的提示,它真棒.谢谢 (2认同)
  • @ZekeDran,是的,该方法只显示模拟器中的数据,而不是您的设备.我已经添加了在您的设备上查看数据库的步骤.检查编辑 (2认同)
  • 您的Github链接中的数据库管理器正在为我工​​作!它还有机会测试查询! (2认同)

Dis*_*two 195

通过ADB Shell连接到Sqlite3

我还没有找到任何方法在Android Studio中执行此操作,但我使用远程shell访问数据库而不是每次都拉取文件.

在此处查找所有信息:http: //developer.android.com/tools/help/adb.html#sqlite

1-在命令提示符中转到platform-tools文件夹

2-输入命令adb devices以获取设备列表

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device
Run Code Online (Sandbox Code Playgroud)

3-将shell连接到您的设备:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
Run Code Online (Sandbox Code Playgroud)

4-导航到包含db文件的文件夹:

cd data/data/<your-package-name>/databases/
Run Code Online (Sandbox Code Playgroud)

5-运行sqlite3连接到你的db:

sqlite3 <your-db-name>.db
Run Code Online (Sandbox Code Playgroud)

6-运行你喜欢的sqlite3命令,例如:

Select * from table1 where ...;
Run Code Online (Sandbox Code Playgroud)

注意:查找下面要运行的更多命令.

SQLite cheatsheet

在SQLite数据库中查看表有几个步骤:

  1. 列出数据库中的表:

    .tables
    
    Run Code Online (Sandbox Code Playgroud)
  2. 列出表格的外观:

    .schema tablename
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打印整个表格:

    SELECT * FROM tablename;
    
    Run Code Online (Sandbox Code Playgroud)
  4. 列出所有可用的SQLite提示命令:

    .help
    
    Run Code Online (Sandbox Code Playgroud)

  • 我在步骤4得到了许可,你怎么看? (17认同)
  • 我个人在尝试访问_databases_文件夹时得到_Permission denied_,运行`run-as your.package.name`就可以了. (12认同)
  • 您可能必须根据您的avd,和/或在步骤3'root adb -s emulator-xxxx shell'以root身份启动adb (4认同)
  • 因为你需要安装才能使用 (3认同)
  • 第5步:找不到sqlite3.为什么? (2认同)
  • 不错的解决方案。在第 4 步之前,使用 `su` 以 `root` 身份登录以访问数据目录。 (2认同)

w3b*_*ark 72

我真的很惊讶没有人给出这个解决方案:

看看Stetho

我曾多次出于不同的目的使用Stetho(其中一种是数据库检查).在实际的网站上,他们还讨论了网络检查的功能并查看了视图层次结构.

它只需要一点设置:1个gradle依赖项添加(你可以为生产版本注释掉),几行代码来实例化Stetho,以及一个Chrome浏览器(因为它使用Chrome devtools来处理所有事情).

更新:您现在可以使用Stetho查看Realm文件(如果您使用的是Realm而不是SQLite DB):https://github.com/uPhyca/stetho-realm

更新#2:您现在可以使用Stetho查看Couchbase文档:https://github.com/RobotPajamas/Stetho-Couchbase

更新#3:Facebook正致力于将所有Stetho功能添加到其新工具Flipper中.Flipper已经拥有Stetho的许多功能.所以,现在可能是进行转换的好时机.https://fbflipper.com/docs/stetho.html

  • 非常感谢.更简单一点,1.`compile'c​​om.facebook.stetho:stetho:1.3.1'`和2.添加此代码`Stetho.initializeWithDefaults(this);`和3.`chrome:// inspect /#devices ` (9认同)
  • 非常简单,您可以在Chrome浏览器中查看数据库中没有第三方工具的数据. (2认同)

die*_*mes 69

不使用模拟器时最简单的方法

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name
Run Code Online (Sandbox Code Playgroud)

注意事项:

我有一段时间没有测试过这个.它可能不适用于API> = 25.如果cp命令不起作用,请尝试以下操作之一:

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name
Run Code Online (Sandbox Code Playgroud)

说明:

第一个块将数据库的权限配置为可读.这种杠杆作用run-as允许您模拟包的用户进行更改.

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as
Run Code Online (Sandbox Code Playgroud)

接下来,我们将数据库复制到世界可读/可写目录.这允许adb pull用户访问.

$ cp /data/data/your.package.name/databases/database_name /sdcard
Run Code Online (Sandbox Code Playgroud)

然后,替换现有的读/写权限.这对您的应用程序的安全性很重要,但是在下次安装时将替换这些权限.

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the shell started with run-as
Run Code Online (Sandbox Code Playgroud)

最后,将数据库复制到本地磁盘.

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name
Run Code Online (Sandbox Code Playgroud)

  • 我遇到第二个命令的问题:run-as.我得到'com.mycompany.myappname'未知.是的,我很肯定我正在使用正确的包名! (4认同)

Ali*_*ali 47

Android Studio 3中,您可以在Android Studio的右下方看到"设备文件资源管理器"部分.

打开它,然后你可以看到文件树,你可以在这个路径中找到一个应用程序数据库:

/data/data/{package_name}/databases/
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我的 database.db 文件不包含任何表。 (4认同)
  • 我推荐sqlitebrowser.org免费,开源,适用于所有平台. (3认同)
  • 当我双击我的应用程序的DB文件时,它会显示所有不可读的字符.您使用什么SQLite阅读器来查看数据库内容? (2认同)

Sco*_*Zhu 23

最后,我找到了一个最简单的解决方案,不需要打开DDMS.

实际上,解决方案基于@Distwo所提到的,但它不一定非常复杂.

首先,请记住设备中数据库文件的路径,它应该是相同的.例如我的是:/data/data/com.XXX.module/databases/com.XXX.module.database

其次,执行此命令将数据库文件拉到PC上

 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/
Run Code Online (Sandbox Code Playgroud)

您需要做的只是复制并存储此命令,然后您可以反复使用它.

第三,如果你有权限被拒绝或类似的东西,只需adb root在上一个命令之前运行.

  • 运行`adb root`在我的手机上不起作用.它打印出`adbd无法在生产版本中以root身份运行.但是,在运行`adb root`之后,pull命令就会冻结,我需要手动停止它. (9认同)

Nab*_*bin 16

Android Studio 中查看数据库内容的简单方法。

#对于Android Studio 4.1 Canary 6及更高版本

您可以使用一个非常简单的 Android Studio 功能Database Inspector。您可以在其中使用新的数据库检查器检查、查询和修改应用程序的数据库。例如,您可以通过修改数据库中的值并在设备上实时 测试这些更改来调试正在运行的应用程序,而无需离开 Android Studio

首先,将您的应用部署到运行 API 级别 26 或更高级别的设备,然后从菜单栏中选择“查看”>“工具窗口”>“数据库检查器”。

#对于Android Studio 4.0 及更低版本

首先,在Android Studio中安装Database Navigator插件

在此处输入图片说明

、重启Android Studio

第三,将数据库保存到默认位置,如:(C:\Users\User Name\Documents\AndroidStudio\DeviceExplorer\emulator or device\data\data\package name\databases)

在此处输入图片说明

、在Database Navigator中连接保存的dbname_db文件

在此处输入图片说明 在此处输入图片说明

提供在第三步中使用的相同 DB 文件路径

(C:\Users\User Name\Documents\AndroidStudio\DeviceExplorer\emulator 或 device\data\data\package name\databases\package naem\dbname_db)

最后,只需测试数据库连接并打开控制台并执行您想做的任何操作。

在此处输入图片说明

如果你想刷新DB只是重复步骤,只是保存或刷新。

快乐编码!!!!!

  • 该解决方案需要您为日常工作付出大量努力。并且在数据库中的每次更改都需要重新加载 sql 文件 - 看起来有点复杂。我更喜欢使用一些能够查看本地服务器上的数据库的插件 (3认同)

Dan*_*iel 16

最简单的方法是使用Android Debug Database(GitHub 上有 7.7k 星)

Android-调试-数据库

好处:

  • 快速实施
  • 查看所有数据库和共享首选项
  • 直接编辑、删除、创建数据库值
  • 在给定的数据库上运行任何 SQLite 查询
  • 在您的数据中搜索
  • 下载数据库
  • 添加自定义数据库文件
  • 无需root设备

如何使用:

  1. 添加debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'build.gradle (module);
  2. 启动应用程序;
  3. 在日志中找到调试链接(在LogCat中)(即D/DebugDB: Open http://192.168.232.2:8080 in your browser链接会不同),在浏览器中打开;
  4. 享受强大的调试工具!

重要的:

  • 不幸的是不适用于模拟器
  • 如果您通过 USB 使用它,请运行 adb forward tcp:8080 tcp:8080
  • 您的 Android 手机和笔记本电脑应连接到同一网络(Wifi 或 LAN)

有关更多信息,请访问GitHub 上的库页面


Ami*_*emi 15

试试这个android studio插件SQLScout.您可以实时查看和编辑您的应用数据库.

SQLScout

编辑:记住它是一个付费插件,但有24小时试用,适合头痛时间.

  • 不是真的,它有24个小时的试用期,我计划我作为开发人员超过24小时的未来. (56认同)
  • 这是付费产品,你忘了提. (15认同)

Sha*_*ble 10

经过我将建议的所有解决方案

使用Stethos
让我们看看它是多么简单

在build.gradle文件中添加以下依赖项

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
Run Code Online (Sandbox Code Playgroud)

然后转到mainActivity onCreate方法添加以下行

Stetho.initializeWithDefaults(this);
Run Code Online (Sandbox Code Playgroud)

这需要你

import com.facebook.stetho.Stetho;
Run Code Online (Sandbox Code Playgroud)

现在,当从Android工作室运行应用程序时,打开Chrome并在地址栏中键入
chrome:// inspect /

在资源选项卡> Web SQL中检查数据库和表格可以轻松实时播放


Ano*_*p M 7

Android 4.1 Canary 5 Preview 中引入了新的数据库检查器,您现在可以直接从 IDE 中检查、查询、修改和调试正在运行的应用程序中的 SQLite 数据库 - https://developer.android.com/studio/preview/features?linkId =86173020#数据库检查员

也支持数据库实时查询 - https://developer.android.com/studio/preview/features?linkId=86173020#query

在此处输入图片说明


Bad*_*del 7

尽管这是一个很老的问题,但我认为它今天仍然相关。使用最新版本的 android studio 我找到了一种查看它的方法 [我不确定它是否在以前的版本中可用。]

以下是查看数据库中数据的方法:

脚步 :

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

  2. 然后文件夹数据>数据,您将看到应用程序列表。

  3. 向下滚动一点并查看包[您的应用程序包]。

  4. 找到你的包后,查看databases文件夹并选择文件,右键单击保存[下载]

  5. 由于不能直接看到数据,有一个工具,DB Browser for SQLite,去网站https://sqlitebrowser.org/

  6. 打开数据库浏览器,点击打开数据库,选择你下载的数据库表,它会显示数据。

新编辑

现在(在您阅读这篇文章的时候),它变得更加容易,因为 Android Studio 已经带有数据库检查器(就在右下角附近)。

单击它,您将看到数据库。但是,请确保最小 API 级别为 26,如果不通过build.gradle文件将其更改为minSdkVersion 26


Gal*_*Rom 6

最简单的方法是连接您的设备并运行 Android Studio 然后从工具栏:

  1. 查看 --> 工具窗口 --> 设备文件资源管理器
  2. 进入数据/数据并找到您的包裹
  3. 找到您要浏览的数据库文件并下载它
  4. 我推荐使用这个在线工具:https : //sqliteonline.com/ 来探索 db 文件

另一种方法是使用 Stetho 库:

  1. 将 Stello 依赖项添加到您的 build.gradle:

    编译 'com.facebook.stetho:stetho:1.5.0'

  2. 将以下行放在您的应用程序类或主活动的 onCreate() 上:

    Stetho.initializeWithDefaults(this);

  3. 连接您的设备,运行应用程序并在 Chrome 上输入以下站点:

    铬://检查/#devices

就是这样。您现在可以浏览您的表格。

注意:建议在转移到生产之前删除依赖项。


Pav*_*ngh 6

随着Android Studio 4.1 Canary 和 Dev 预览版的发布,您可以使用名为的新工具

数据库检查器

数据库检查员

安装 AS 4.1+,运行应用程序,打开数据库检查器,现在您可以在数据库检查器面板的左侧查看数据库文件,然后选择表来查看内容。

实时查询

您可以使用“运行 SQL”选项运行查询,或者如果您使用Room,然后打开数据库检查器并运行应用程序,则可以通过单击注释左侧的运行按钮在界面中运行 DAO 查询@Query

实时查询


MD0*_*D05 5

要知道你在android studio中创建的sqlite数据库存储位置,你需要按照简单的步骤:

1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your  database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.
Run Code Online (Sandbox Code Playgroud)

有关更多信息,此链接将非常有用. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/

要查看db文件中存在的数据,您需要下载sqlite浏览器或在任何浏览器中添加相同的插件,因此您需要在浏览器中打开文件并查看数据.

http://sqlitebrowser.org/下载浏览器

以下是显示包含注册数据库的浏览器

谢谢,


j3A*_*App 5

如果您想在 ANDROID STUDIO 内浏览数据库,我正在使用以下内容:

转到文件/设置/插件并查找:

在此输入图像描述

...重新启动 Android Studio 后,您可以像这样选择下载的数据库文件: 在此输入图像描述

...单击“打开 SQL 控制台”图标,您最终会在 Android Studio 中看到数据库的漂亮视图: ![在此输入图像描述

  • 所以我必须一直从模拟器复制数据库? (2认同)