没有root的安卓手机连接电脑直接使用ADB进行查看data目录下的数据库,会显示Permission denied
,即没有权限。通用的查看方式如下:
shell@android:/data $ run-as com.your.package
run-as com.your.package
shell@android:/data/data/com.your.package $ cd /data/data/com.your.package
cd /data/data/com.your.package
shell@android:/data/data/com.your.package $ ls
ls
cache
databases
lib
shared_prefs
shell@android:/data/data/com.your.package $ cd databases
cd databases
shell@android:/data/data/com.your.package/databases $ ls
yourpackagename.db
本机的具体步骤
C:\Users\hust_twj>adb shell
z2_row:/ $ run-as com.example.hust_twj.sqlite
z2_row:/data/data/com.example.hust_twj.sqlite $ cd /data/data/com.example.hust_twj.sqlite
z2_row:/data/data/com.example.hust_twj.sqlite $ ls
cache databases
z2_row:/data/data/com.example.hust_twj.sqlite $ cd databases
z2_row:/data/data/com.example.hust_twj.sqlite/databases $ ls
Info.db Info.db-journal
z2_row:/data/data/com.example.hust_twj.sqlite/databases $ sqlite3 Info.db
SQLite version 3.9.2 2015-11-02 18:31:45
Enter ".help" for usage hints.
sqlite> .table
android_metadata person
sqlite> pragma table_info(person);
0|id|integer|0||1
1|name|text|0||0
sqlite> select * from person;
1|Tom
2|Lily
3|Joe
sqlite>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
几点说明:
1、com.example.hust_twj.sqlite 为数据库所在的应用程序完整包名;
2、cd为 进入其中一个目录(应用程序),并查看为ls,如下表示进入进入data目录的应用程序所在包中并查看:
z2_row:/data/data/com.example.hust_twj.sqlite $ cd/data/data/com.example.hust_twj.sqlite
z2_row:/data/data/com.example.hust_twj.sqlite $ ls
- 1
- 2
然后返回
cache databases
- 1
其中 cache 是缓存, databases 是用于存放数据库文件的。
3、再cd进入数据库,并ls一下:
z2_row:/data/data/com.example.hust_twj.sqlite $ cd databases
z2_row:/data/data/com.example.hust_twj.sqlite/databases $ ls
- 1
- 2
可以看到如下界面(当然每个电脑不一样…):
Info.db Info.db-journal
- 1
其中后缀名为 journal 的文件是日志文件,可以不用管,Info.db 才是真正所要查看的数据库文件。
4、使用 sqlite3 命令来打开数据库,如下所示:
z2_row:/data/data/com.example.hust_twj.sqlite/databases $ sqlite3 Info.db
- 1
出现如下界面即表示数据库已经打开:
5、怎么才能知道当前数据库中有哪些表呢?很简单,使用.table命令就行:
sqlite> .table
- 1
6、使用pragma table_info(TABLE_NAME)
命令来查看表的数据结构。可以看到表中有2个字段。
7、查询:select * from person;。可以看到表中有三条记录。
完整的操作截图如下:
说明:本文所有的$符号 后为输入命令。