我需要查看我的 SQLite 数据库,但我不知道该怎么做。我已经访问了http://www.sqlite.org/download.html并为我的操作系统下载了命令行 shell,但是当我运行程序并键入时adb ...
出现错误。
注意:我使用的是 Android Studio,所以我假设我不需要安装任何额外的东西,因为我记得 Android Studio 说它拥有所需的所有 SDK 工具。
我需要查看我的 SQLite 数据库,但我不知道该怎么做。我已经访问了http://www.sqlite.org/download.html并为我的操作系统下载了命令行 shell,但是当我运行程序并键入时adb ...
出现错误。
注意:我使用的是 Android Studio,所以我假设我不需要安装任何额外的东西,因为我记得 Android Studio 说它拥有所需的所有 SDK 工具。
我在 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 数据库中的表:
列出数据库中的表:
.tables
列出表格的外观:
.schema tablename
打印整个表格:
SELECT * FROM tablename;
列出所有可用的 SQLite 提示命令:
.help
对我来说最简单的方法是使用 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
选项卡并选择要查看的表。
您遇到的问题很常见,文档中没有很好地解释。普通设备不包含 sqlite3 数据库二进制文件,这就是您收到错误的原因。Android Emeulator、OSX、Linux(如果已安装)和 Windows(安装后)具有二进制文件,因此您可以在计算机上本地打开数据库。
解决方法是将数据库从您的设备复制到本地计算机。这可以通过 ADB 完成,但需要许多步骤。
在开始之前,您需要一些信息:
<package name>
例如,您的com.example.application
<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 路径上。
cd <ANDROID_SDK_PATH>
(对于我在 Windows 上cd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(这仅在只有一个模拟器运行时才有效)cd data/data
su
(获得超级用户权限)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
,否则该语句不会发出,而是换行。)注意:如果您需要列出目录内容,请使用ls
(Linux) 或(Windows)。dir
当你输入 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
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
有关更多详细信息,您可以阅读我的帖子:如何轻松查看您的数据库记录
根据设备,您可能在 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 版本。