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

如何在Android Studio中使用ADB查看SQLite数据库,android,adb,Android,Adb,我需要查看我的SQLite数据库,但我不知道如何操作。我已经访问并下载了操作系统的命令行shell,但是当我运行程序并键入adb…时,我得到了错误 注意:我使用的是Android Studio,所以我假设我不需要安装任何额外的东西,因为我记得Android Studio说它有所有需要的SDK工具。键入adb时它提到了什么 step1. >adb shell step2. >cd data/data step3. >ls -l|grep "your app package her

我需要查看我的SQLite数据库,但我不知道如何操作。我已经访问并下载了操作系统的命令行shell,但是当我运行程序并键入
adb…
时,我得到了错误


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

键入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

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

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

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

  • SDK的路径(如果未包含在操作系统环境中)
  • 您的
    ,例如,
    com.example.application
  • 放置数据库的
    ,例如
    ~/Desktop
    %userprofile%\Desktop
接下来,您需要了解每个命令被写入的终端。下面示例中的第一个字符不会被键入,但会让您知道我们使用的是什么shell:

  • =操作系统命令提示符
  • $
    =ADB外壳命令提示符
  • =ADB shell作为管理命令提示符
  • %
接下来从终端或命令输入以下命令(不要在
()
中输入第一个字符或文本)

adb外壳 $su ! cp/data/data//Databases//sdcard ! 出口 $exit >亚洲开发银行拉动/SD卡/ >sqlite3 %.倾倒 %.exit(退出sqldb)
这是将数据库复制到本地机器并在本地读取数据库的一种非常全面的方法。有一些和其他资源解释了如何从仿真器将sqlite3二进制文件安装到您的设备上,但有一次access这个过程是有效的


如果您需要以交互方式访问数据库,我建议您在模拟器(已经有sqlite3)中运行应用程序,或者。

对我来说,最简单的方法是使用Android设备监视器获取数据库文件,使用SQLite数据库浏览器查看文件,同时仍使用Android Studio对Android进行编程

1) 从Android Studio运行并启动带有Android emulator的数据库应用程序。(我在数据库应用程序中插入了一些数据以进行验证)

2) 运行Android设备监视器。如何跑步?;转到
[您的\u文件夹]>sdk>tools
。您可以在该文件夹中看到monitor.bat<代码>shift+右键单击文件夹内的,然后选择“
在此处打开命令窗口
”。此操作将启动命令提示符。键入
monitor
并启动Android设备监视器

3) 选择当前正在运行的仿真器。然后转到
数据>数据>[你的应用程序名称]>数据库

4) 单击图标(位于右上角)(将鼠标悬停在图标上,您将看到“从设备中拉出文件”),然后将其保存到您喜欢的任何位置

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

6) 转到
浏览数据
选项卡并选择要查看的表

最简单的方法:通过ADB外壳连接到Sqlite3 我还没有在Android Studio中找到任何方法来实现这一点,但我使用远程shell访问db,而不是每次都拉文件

在此处查找所有信息:

1-在命令提示符下转到平台工具文件夹

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

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device
3-将外壳连接到设备:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
4a-您可以在根设备上绕过此步骤

run-as <your-package-name> 
注意:在下面查找更多要运行的命令

SQLite备忘单 要查看SQLite数据库中的表,有几个步骤:

.tables
  • 列出数据库中的表:

    .tables
    
  • 列出表格的外观:

    .schema tablename
    
  • 打印整个表格:

    SELECT * FROM tablename;
    
  • 列出所有可用的SQLite提示命令:

    .help
    

  • 根据设备的不同,您可能在adb shell中找不到sqlite3命令。在这种情况下,您可能希望遵循以下步骤:

    亚行壳牌

    $run-as-package.name
    $cd./databases/
    $ls-l#查找 当前权限-r=4,w=2,x=1
    $chmod 666./dbname.db
    $ 退出
    $exit
    adb pull /data/data/package.name/databases/dbname.db~/Desktop/
    ~/Desktop/dbname.db/data/data/package.name/databases/dbname.db
    adb外壳
    $run-as-package.name
    $chmod 660 ./databases/dbname.db#恢复原始权限
    $exit
    $ 退出

    如需参考,请访问

    在执行上述过程后,可能会出现“未找到远程对象”的情况。然后在adb shell中将数据库文件夹的权限更改为755

    $chmod 755数据库/


    但请注意,它只能在android版本<21时工作

    您可以使用名为
    Stetho
    的非常好的工具,将其添加到
    build.gradle
    文件中:

    compile 'com.facebook.stetho:stetho:1.4.1'
    
    并在
    应用程序
    活动
    onCreate()
    方法中初始化它:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Stetho.initializeWithDefaults(this);
        setContentView(R.layout.activity_main);
    }
    
    然后,您可以在地址的chrome中查看db记录:

    chrome://inspect/#devices
    
    有关更多详细信息,请阅读我的帖子:

  • 打开一个终端
  • cd
    (对于Windows上的我
    cd C:\Users\Willi\AppData\Local\Android\sdk
  • cd平台工具
  • adb shell
    (仅当只有一个仿真器在运行时才有效)
  • cd数据/数据
  • su
    (获得超级用户权限)
  • cd/数据库
  • sqlite3
  • 发出SQL语句(重要提示:term
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Stetho.initializeWithDefaults(this);
        setContentView(R.layout.activity_main);
    }
    
    chrome://inspect/#devices