如何用sqlite3来访问android真机中应用程序的数据库文件

本文讲述了如何在未root的Android设备上通过ADT虚拟机获取sqlite3工具,并解决权限问题将其拷贝到手机中,以便于直接在手机上操作SQLite数据库文件,进行数据查询。

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

   在android中所有涉及到数据库的地方,都是有关于sqlite3的,而所有的存到数据库中的数据都是通过**.db文件存储,用sqlite3来打开查看,之前的项目为了检测数据是否插入正确采用的在客户端直接用程序getAllData的方法来获取到所有的数据,在数据存贮排错方面带来了很大问题,不知道是插入数据库的数据源出错还是程序代码本身的问题。网上有方法可以通过这种sqlite3工具来查看数据源文件,但那时候由于项目时间紧张,而且配置起来繁琐,所以放弃了。如今花了一些时间,终于算是弄出来了,不过还是有些瑕疵。
   首先手机应用程序内的数据基本存储在/data/data的文件夹中,要想进去必须:
   1.获取手机root权限,
   2.到/data/data/对应的应用程序文件夹,到里面的databases,查看所有***.db文件,用sqlite3工具打开数据库文件
   3.通过sqlite3的语法来查看数据。

    在第二步出现了很多问题,到这个文件夹中执行shell指令,因为android底层是linux,所以一般用shell指令来操作文件,指令错误提示没有sqlite3工具,而有些手机在root之后是自带这个工具的,很不幸,这个Note3没有,所以去找资料发现这个sqlite3是放在/system/xbin下的,但是进入这个文件下时发现还是没有sqlite3,所以又去百度,发现有两种方法:在ADT中启动android的虚拟机(开发工具自带的用于测试手机应用的模拟机器),下载sqlite3源文件,这个上面花了很多时间,第二种方法网上下载的基本都是.exe形式,不能在手机上用,第一种方法配置以及开机等测试花费了不少时间,光这模拟机器开下机就花了我20分钟,总算看到了它的庐山真面目。如1.png,

   而做这个虚拟机器的目的在于从它的机器中拷贝出此机器中的sqlite3出来。这步总算完成,但是怎么把sqlite3拷贝到真机的手机中又是个问题,期间有权限问题,我用chmod命令发现没用,后来通过mount -o remount,rw -t yaffs2 /system命令重新挂载下,然后用chmod才能有效,但是挂载命令对于手机来说要非常小心,一不小心就有可能把机器弄瘫痪了,我之前就差点出事,

这边有些说的省略,其实重新挂载后 ,还没有system/xbin的权限  这时候需要chmod 777 system ,chmod 777 system/xbin 赋权,接着就可以退出adb shell模式 在cmd中 adb push D:/sqlite3 /system/xbin 或者在DDMS中直接用拖拽方式,很简单吧?我可是找了很多个资料的。这个sqlite3我的下载资料里有,是从模拟机上拷贝出来的,

这样之后终于让sqlite3回到它该去的地方了,然后我们通过cmd,进入shell模式,cd到目录下,通过sqlite3 文件名,就可以打开这个文件,并进入sqlite的命令行模式,可以用sql语句来查询数据。如图2.png,

  至此,算是能看到数据源了,但表应该不至于就这一张,但这个文件夹下只有这一种有很多条数据的表,根据数据看,这是聊天信息表,但其他的表就不知去哪儿去了。

   而其中乱码问题应该是数据源是utf-8,而cmd里编码是GBK的缘故。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值