未root的安卓真机使用sqlite3查看data目录下的数据库

本文介绍了一种无需获得root权限即可在Android设备上查看应用程序数据库的方法。通过使用ADB命令及run-as指令,可以访问目标应用的数据目录,进一步利用sqlite3命令查询数据库内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没有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;。可以看到表中有三条记录。

完整的操作截图如下: 
这里写图片描述

说明:本文所有的$符号 后为输入命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值