86

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

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

4

7 回答 7

167

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

我在 Android Studio 中没有找到任何方法来做到这一点,但我使用远程 shell 访问数据库,而不是每次都拉文件。

在这里找到所有信息:http: //developer.android.com/tools/help/sqlite3.html

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> 

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

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

5-运行 sqlite3 连接到您的数据库:

sqlite3 <your-db-name>.db

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

Select * from table1 where ...;

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

SQLite 备忘单

有几个步骤可以查看 SQLite 数据库中的表:

  1. 列出数据库中的表:

    .tables
    
  2. 列出表格的外观:

    .schema tablename
    
  3. 打印整个表格:

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

    .help
    
于 2015-03-23T09:01:29.873 回答
76

对我来说最简单的方法是使用 Android Device Monitor 来获取数据库文件和 SQLite 数据库浏览器来查看文件,同时仍然使用 Android Studio 来编程 android。

1) 从 Android Studio 使用 Android 模拟器运行和启动数据库应用程序。(我在数据库应用程序中插入了一些数据进行验证)

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

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

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

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

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

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

于 2014-07-17T16:35:16.163 回答
15

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

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

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

  • SDK 的路径(如果未包含在您的操作系统环境中)
  • <package name>例如,您的com.example.application
  • a<local path>放置您的数据库,例如。~/Desktop或者%userprofile%\Desktop

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

  • >= 你的操作系统命令提示符
  • $= 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)

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

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

于 2013-08-22T13:26:11.617 回答
10
  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) 或(Windows)。dir

于 2017-01-08T19:52:08.237 回答
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
于 2013-08-22T01:40:40.087 回答
5

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

compile 'com.facebook.stetho:stetho:1.4.1'

Application并在你的orActivity onCreate()方法中初始化它:

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

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

chrome://inspect/#devices

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

于 2016-12-25T12:04:32.873 回答
4

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

亚行外壳

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

如需参考,请访问https://stackoverflow.com/a/17177091/3758972

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

$ chmod 755 数据库/

但请注意,它仅适用于 < 21 的 android 版本。

于 2016-02-23T07:42:52.973 回答