您的位置:首页 > 移动开发 > Android开发

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

2014-09-23 17:39 288 查看
在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的缘故。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: