我需要查看我的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- 在命令提示符中进入您的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
4a- 如果您的设备已经root,您可以跳过此步骤
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
[your_folder] > sdk >tools
。您可以在该文件夹中看到monitor.bat文件。在文件夹内部按住shift键并右键单击,然后选择“在此处打开命令窗口”。这个操作将启动命令提示符。输入monitor
,Android Device Monitor将被启动。data>data>[your_app_name]>databases
4)点击图标(位于右上角)(将光标悬停在图标上,您将看到“从设备中提取文件”),然后将其保存在任何您喜欢的位置Browse Data
选项卡并选择要查看的表格。> 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)或dir
(Windows)。
你输入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
adb
...当我在SQLite3 shell中输入它时,它会给我返回...>
,并且期望一个命令的继续。它基本上在等待一个;
。如果我键入分号,我会得到error: near "adb": syntax error
...在命令提示符中键入adb shell
告诉我adb不是一个已识别的命令...我应该将adb添加到我的路径文件中吗? - Terence Chow您可以通过将以下内容添加到 build.gradle
文件中,使用一个非常好的工具 Stetho
:
compile 'com.facebook.stetho:stetho:1.4.1'
在你的Application
或Activity
的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命令。在这种情况下,您可能希望按照以下步骤操作:
adb shell
$ 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://dev59.com/43I95IYBdhLWcg3w8y2N#17177091。
在按照上述步骤后,有时候会遇到“远程对象未找到”的情况。那么,请在adb shell中将您的数据库文件夹权限更改为755。
$ chmod 755 databases/
但请注意,这仅适用于Android版本<21。
/data/data
目录。 - Dheeraj Bhaskarcp /data/data/<your-package-name>/databases/<your-db-name>.db /sdcard
。然后,使用像Explorer这样的文件管理器将文件发送到您的电子邮件。 :) - Cheok Yan Cheng