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

问题描述 投票:207回答:20

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

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

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

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

android android-studio android-sqlite ddms
20个回答
276
投票

Viewing databases from Android Studio:

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

  1. 下载并安装SQLiteBrowser
  2. 将数据库从设备复制到PC: Android Studio版本<3.0: 通过Tools > Android > Android Device Monitor打开DDMS 点击左侧的设备。 你应该看到你的申请: 转到文件资源管理器(右侧的一个选项卡),转到/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。单击“打开数据库”,导航到保存数据库文件的位置,然后打开。您现在可以查看数据库的内容。

To view your database on your mobile device:

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

enter image description here

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


4
投票

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

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

另一种方法是使用Stetho库:

  1. 将Stello依赖项添加到build.gradle: 编译'com.facebook.stetho:stetho:1.5.0'
  2. 将以下行放在Application类或主Activity的onCreate()上: Stetho.initializeWithDefaults(本);
  3. 连接您的设备,运行应用并在Chrome上输入以下网站: 铬://检查/#设备

就是这样。你现在可以探索你的桌子。

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


2
投票

打开Android Studio底部的设备文件浏览终端。

打开名为Data的文件夹,然后在Data中再次打开Folder Data。

https://sqliteonline.com/

向下滚动文件夹列表,找到包含.package.name的文件夹。打开文件夹your.package.name>数据库。你得到your.databaseName。右键单击your.databaseName并另存为C:/ your / Computer / Directory。

转到C:/ your / Computer / Directory使用Open the folder data打开your.databaseName

DB SQLite


2
投票

适用于Android Studio 3.X

  1. 查看 - >工具窗口 - >设备文件资源管理器
  2. 在文件资源管理器data-> data-> com。(您的应用程序包) - >数据库中
  3. 右键单击数据库并保存在本地计算机上。要打开文件,只需在其上拖动数据库文件即可使用SQLite Studio。

这是SQLite Studio的链接:enter image description here


2
投票

如果你想从WITHIN ANDROID STUDIO浏览你的数据库,这就是我正在使用的:

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

https://sqlitestudio.pl/index.rvt?act=download

...重新启动Android Studio后,您可以选择下载的数据库文件:enter image description here

...单击“打开SQL控制台”图标,最终得到Android Studio中数据库的这个漂亮视图:enter image description here


1
投票

这是一个非常古老的问题,我的回答类似于上面的一些答案,但做得更快。下面的脚本适用于Mac,但我确信有人可以为Windows修改它。

1)在Mac上打开脚本编辑器(您只需在Spotlight中搜索脚本编辑器) 2)复制并粘贴下面的文本,并使用您的SDK路径,包名等进行修改(见下文) 3)保存脚本!!

而已!只需按下顶部的播放按钮即可获取更新的数据库文件,该文件将位于您的桌面上。

在下面的脚本中替换以下内容:

path_to_my_sdk == >>将完整路径放到你的sdk上 my_package_name == >>您的应用程序的包名称 myDbName.db == >>数据库的文件名

![enter image description here

希望这有助于某人。


1
投票

我正在使用Windows 7,我的设备是模拟的Android设备API 23.我认为它对于任何真实设备都是相同的,只要它是root并且API不高于23

转到工具 - > Android - > Android设备监视器。转到文件资源管理器。就我而言,它位于数据/数据// app_webview / databases / file_0 / 1中

我必须在名为“1”的文件末尾手动添加.db


1
投票

我知道问题相当陈旧,但我相信这个问题仍然存在。

从浏览器查看数据库

我创建了一个开发工具,您可以将其作为lib集成到您的Android应用程序项目中。该工具在您的应用中打开服务器套接字,以通过Web浏览器进行通信。您可以浏览整个数据库并直接通过浏览器下载数据库文件。

set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db" do shell script getLocalDb

可以通过jitpack.io完成集成:

project build.gradle:

enter image description here

app build.gradle:

//...
allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
//...

Setup Application class

为了只在某些构建类型或产品风格中编译DebugGhostLib,我们需要一个抽象的Application类,它将以特殊的风格派生。将以下类放在//... dependencies { //... debugCompile 'com.github.sanidgmbh:debugghost:v1.1' //... } //... 文件夹中(在main> java下):

your.app.package

现在,对于您的发布版本类型(或产品风格),您将以下Application类添加到public class AbstractDebugGhostExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); // Do your general application stuff } } (或product-flavor)文件夹(也在release> java下):

your.app.package

这是不会引用DebugGhostLib的应用程序类。

还告诉你的public class MyApp extends AbstractDebugGhostExampleApplication { @Override public void onCreate() { super.onCreate(); } } 你正在使用自己的应用程序类。这将在您的AndroidManifest.xml文件夹中完成:

main

现在,对于您的调试构建类型(或产品风格),您将以下Application类添加到<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android"> <!-- permissions go here --> <application android:name=".MyApp"> <!-- register your own application class --> <!-- your activities go here --> </application> </manifest> (或product-flavor)文件夹(也在debug> java下):

your.app.package

你可以得到public class MyApp extends AbstractDebugGhostExampleApplication { private DebugGhostBridge mDebugGhostBridge; @Override public void onCreate() { super.onCreate(); mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION); mDebugGhostBridge.startDebugGhost(); } }


1
投票

我不得不将数据库从手机拉到PC。现在我使用这个制作精良且免费的应用程序,它具有很多功能。它适用于带有Root设备的tool here。 如果您发现如何在没有root的情况下使其工作,请告诉我。

API 4.1+

Screenshot SqlitePrime


1
投票

它是来自其他答案和加号的组合

  1. 安装https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime
  2. 从设备文件资源管理器中获取MyBase.db的确切位置,例如“/data/data/com.whatever.myapp/databases/MyBase.db”
  3. 将项目窗口从Android设置为Project - 这样您就可以看到文件(build.gradle,gradle.properties,...等)
  4. 在项目窗口中右键单击并选择在终端中打开
  5. 在终端中,您现在位于硬盘的应用程序的根管理器中,因此执行:adb pull /data/data/com.whatever.myapp/databases/MyBase.db
  6. 现在,在Android Studio的Project窗口中,您有一个文件“Based.db”
  7. 双击Project中的db文件,现在可以在DB Browser中浏览/编辑数据库
  8. 准备好后,只需在数据库浏览器中进行写入更改,以便将数据库保存在硬盘上
  9. 在带有命令的终端中:adb push MyBase.db /data/data/com.whatever.myapp/databases/MyBase.db,您只需从Hardisk发送设备即可编辑数据库。

0
投票

这可能不是您正在寻找的答案,但我没有更好的方法从手机下载数据库。我建议的是确保你使用这个mini-DDMS。如果你没有点击程序最左边的非常小的camoflage框,它将是超级隐藏的。 (试图将鼠标悬停在它上面,否则你可能会错过它。)

还有没有过滤器的下拉(右上)。它实际上有很多不同的方法可以通过PPID,名称和更多来监控不同的流程/应用程序。我一直用这个来监控手机,但请记住,我没有做那种需要120%肯定的开发工作,数据库没有做一些与众不同的事情。

希望能帮助到你


190
投票

Connect to Sqlite3 via ADB Shell

我还没有找到任何方法在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

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

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

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

cd data/data/<your-package-name>/databases/

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

sqlite3 <your-db-name>.db

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

Select * from table1 where ...;

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

SQLite cheatsheet

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

  1. 列出数据库中的表: .tables
  2. 列出表格的外观: .schema tablename
  3. 打印整个表格: SELECT * FROM tablename;
  4. 列出所有可用的SQLite提示命令: .help

0
投票

我已经将这个过程的unix命令行自动化放在一起并将代码放在这里:

DB Browser for SQLite

它是一个shell脚本,它将包名称和数据库名称作为参数,从附加的Android设备下载数据库文件,并针对下载的文件运行自定义脚本。然后,使用像'watch'这样的unix工具,可以打开一个终端窗口,定期更新数据库脚本输出视图。


69
投票

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

看看Stetho

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

它只需要一点设置: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


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

Caveats:

我有一段时间没有测试过这个。它可能不适用于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

Explanation:

第一个块将数据库的权限配置为可读。这利用了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

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

$ cp /data/data/your.package.name/databases/database_name /sdcard

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

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the shell started with run-as

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

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name

43
投票

在Android Studio 3及更高版本中,您可以在Android Studio的右下方看到“设备文件资源管理器”部分。

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

/data/data/{package_name}/databases/

enter image description here


21
投票

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

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

首先,记住设备中数据库文件的路径,它应该始终相同。例如我的是:qazxsw poi

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

/data/data/com.XXX.module/databases/com.XXX.module.database

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

第三,如果你有权限被拒绝或类似的东西,只需在上一个命令之前运行 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/


15
投票

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

SQLScout

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


9
投票

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

使用Stethos 让我们看看它有多简单

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

SQLScout

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

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'

这需要你

Stetho.initializeWithDefaults(this);

现在从Android工作室运行应用程序,打开Chrome和地址栏类型 铬://检查/

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


5
投票

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

import com.facebook.stetho.Stetho;

有关更多信息,此链接将非常有用。 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.

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

http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/下载浏览器

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

谢谢,

© www.soinside.com 2019 - 2024. All rights reserved.