如何在Android Studio中使用ADB来查看SQLite数据库

Ter*_*how 74 android adb

我需要查看我的SQLite数据库,但我不知道该怎么做.我已经去了http://www.sqlite.org/download.html并为我的操作系统下载了命令行shell,但是当我运行程序并输入时adb ...我得到了错误.

注意:我正在使用Android Studio,所以我假设我不需要安装任何额外的东西因为我记得Android Studio说它有所需的所有SDK工具.

Dhe*_*kar 143

最简单的方法:通过ADB Shell连接到Sqlite3

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

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

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)

4a-您可以在有根设备上绕过此步骤

run-as <your-package-name> 
Run Code Online (Sandbox Code Playgroud)

4b-导航到包含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)


akn*_*nay 75

最方便的方法是使用Android Device Monitor获取数据库文件,使用SQLite DataBase Browser查看文件,同时仍使用Android Studio对android进行编程.

1)使用Android Studio中的Android模拟器运行并启动数据库应用程序.(我将一些数据插入数据库应用程序以验证)

2)运行Android设备监视器.怎么跑?去吧[your_folder] > sdk >tools.您可以在该文件夹中看到monitor.bat.shift + right click在文件夹内,选择" Open command window here".此操作将启动命令提示符.monitor将启动type 和Android Device Monitor.

3)选择您当前正在运行的模拟器.然后去data>data>[your_app_name]>databases

4)单击图标(位于右上角)(将鼠标悬停在图标上,您将看到"从设备中提取文件")并保存在您喜欢的任何地方

5)启动SQLite数据库浏览器.将刚刚保存的文件拖放到该浏览器中.

6)转到Browse Data选项卡并选择要查看的表格.

在此输入图像描述 在此输入图像描述

  • 我认为你无法从Device Monitor打开数据目录,至少我不能这样做. (9认同)
  • 您无法在非root设备上打开数据目录,但可以在模拟器上执行此操作. (6认同)
  • 在模拟器运行时,您可以使用adb从模拟Android下载文件.示例:adb pull /data/data/com.yourpackagename.here/databases/yourdbfile.db (4认同)
  • 如何在非root设备上打开数据? (3认同)

hos*_*oss 14

您遇到的问题很常见,在文档中没有解释清楚.普通设备不包含sqlite3数据库二进制文件,这就是您收到错误的原因.Android Emeulator,OSX,Linux(如果已安装)和Windows(安装后)具有二进制文件,因此您可以在计算机上本地打开数据库.

解决方法是将数据库从您的设备复制到本地计算机.这可以通过ADB完成,但需要许多步骤.

在开始之前,您需要一些信息:

  • SDK的路径(如果未包含在您的OS环境中)
  • 你的<package name>,例如,com.example.application
  • a <local path>放置数据库,例如 ~/Desktop要么%userprofile%\Desktop

接下来,您将需要了解每个命令写入下面示例中第一个字符的终端不会被输入但是让您知道我们所处的shell:

  • > =你的OS命令提示符
  • $ = ADB shell命令提示符
  • ! = ADB shell作为管理员命令提示符
  • %

接下来,从终端或命令输入以下命令(不要输入第一个字符或文本())

> adb shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit  (to exit sqldb)
Run Code Online (Sandbox Code Playgroud)

这是将数据库复制到本地计算机并在本地读取数据库的方法.有SO和其他资源解释如何从模拟器将sqlite3二进制文件安装到您的设备上但是一次访问此过程有效.

如果您需要以交互方式访问数据库,我建议您在模拟器(已经有sqlite3)中运行您的应用程序或在您的devices/xbin路径上安装sqlite.


log*_*000 8

键入adb时它提到了什么?

step1. >adb shell
step2. >cd data/data
step3. >ls -l|grep "your app package here"
step4. >cd "your app package here"
step5. >sqlite3 xx.db
Run Code Online (Sandbox Code Playgroud)


Wil*_*zel 7

  1. 打开一个终端
  2. cd <ANDROID_SDK_PATH>(适用于Windows cd C:\Users\Willi\AppData\Local\Android\sdk)
  3. cd platform-tools
  4. adb shell (仅当只运行一个仿真器时才有效)
  5. cd data/data
  6. su (获得超级用户权限)
  7. cd <PACKAGE_NAME>/databases
  8. sqlite3 <DB_NAME>
  9. 发出SQL语句(重要的是:终止它们;,否则不会发出语句而是会中断到新行.)

注意:如果需要列出目录内容,请使用ls(Linux)或dir(Windows).


ysh*_*hak 5

您可以使用一个非常好的工具,Stetho通过将其添加到build.gradle文件中来调用:

compile 'com.facebook.stetho:stetho:1.4.1'
Run Code Online (Sandbox Code Playgroud)

并在您的ApplicationorActivity onCreate()方法中对其进行初始化:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Stetho.initializeWithDefaults(this);
    setContentView(R.layout.activity_main);
}
Run Code Online (Sandbox Code Playgroud)

然后可以在地址中查看chrome中的db记录:

chrome://inspect/#devices
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,您可以阅读我的帖子:如何轻松查看您的数据库记录