android真机模拟程序 root权限下 查看项目数据库

android真机模拟程序 root权限下 查看项目数据库

作为刚入门android开发的小白菜,开发是一件特别有成就感的事情,但是自己的笔记本带不起android虚拟机是痛啊,只能从朋友那里搞了个退休下来的小米3做测试机,虽然老了点,但是学习Android是够用了,那么学着学着就接触到sqlite数据库这里了,学着用SqliteOpenHelper,在这里跌了很多坑,现在就把我遇到的一些问题及解决方法给大家分享一下,如果要我谈对这个函数的理解,我实在太菜,我还是理解的不够深,所以这里就浅谈一些我遇到的问题及解决方法。

遇到的问题
- 真机模拟测试程序时创建的数据库文件在哪里找?
- SimpleCursorAdapter用的时候要注意的地方


解决方法

首先来说怎么在真机里查看程序的sqlite数据库文件,因为不是虚拟机,真机有各种权限,不要以为root了,你就真的获取了手机的所有权限,还是有很多文件夹是我们打不开的,我现在用的小米3测试机是5.11.5miui开发版,已经root,但是就是死活打不开data文件夹,因为据了解,sqlite数据库文件是生成在手机/data/data文件里的,然后各种搜索db文件也是徒劳,就在网上找解决方法然后搜着搜着就发现了adb这个东西。

adb是什么?Android Debug Bridge,就是起到调试桥的作用。借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

在sdk文件目录里的platform-tools文件夹里有个adb.exe
我们要想进入data文件夹就需要靠这个东西。
我用的是win 8系统具体操作如下
步骤:
-win+r输入cmd回车进入命令窗口
-使用cd命令进入adb.exe所在目录

例如我的adb.exe所在目录为D盘的eclipse-adt\sdk\platform-tools
那么我cmd里命令操作时先”cd \“转到c盘根目录,再“d:”转到d盘目录,然后“cd \eclipse-adt\sdk\platform-tools”

-然后输入adb shell

接着输入”su“获得root权限操作,现在我们就可以开始给data文件开通权限了,在这里我们要用到chmod命令,我们输入”chmod 777 /data“这样就解锁了data文件夹的权限,接着我在eclipse中的file explorer查看data文件,可以打开了,但是data里面的文件还是打不开,ok,那么我们继续用chomd命令继续给data里面的文件解锁权限,比如我要打开data里面的data文件我再命令黑框里继续输入”chmod 777 /data/data“,然后就可以打开data文件下的data文件了,以此类推,直到给项目里的db文件赋予权限。

这样我们就可以顺利找到数据库xxx.db文件了,然后通过eclipse把数据库文件导出到电脑,我们就可以用sqlite3命令来查看数据库文件了,具体怎么查看我在这里就不叙述了。


SimpleCursorAdapter注意事项

用到cursor 和simplecursoradapter
报错:java.lang.IllegalArgumentException:
column ‘_id’ does not exist
原因:
使用Cursor相关的Adapter时需要一个自增的列,且名字必需为 _id。而我创建的表里没有这个字段。

解决方法

1)创建数据表时插入一个名为_id的列,类型为自增量,因为在使用Cursor相关的Adapter时需要用到这个列

2)如果实在不需要这个列的话,可以把数据表中某一列使用AS映射为 _id,再进行操作

如,我有一个表, 表中两个字段分别为Nameid, 和TerminalID, 现在我想用一个SimpleCursorAdapter来把这个表中的数据显示到一个listView上,注意其中有”Nameid as _id”, 以及new String[]{“_id”, “TerminalID”}.

注意用法如下

Cursor cursor=db.query("dbtest", new String[]{"Nameid as _id","TerminalID"}, null, null, null, null, null);
if (cursor!=null){
   //将数据显示在listview中
SimpleCursorAdapter sca=new SimpleCursorAdapter(ResultActivity.this,R.layout.my_list,cursor,new String[]{"_id","TerminalID"},new int[]{R.id.textView1,R.id.textView2}, SimpleCursorAdapter.NO_SELECTION);
   lv.setAdapter(sca);
  }

2015年11月14日 9:53 by lake qq:417749092
欢迎交流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值