不root的情况下 查看App的数据表
一直以来查看sqlite的数据库都须要root才干查看,可是公司的好多測试机root起来比較麻烦~~~
近期刚好项目上线,略闲,
于是决定写一个libraryproject便于以后调试代码
关键代码例如以下
一、查看当前app的数据库
context.databaseList()
当中databaseList方法是ContextWrapper类中的一个方法定义例如以下
@Override
public String[] databaseList() {
return mBase.databaseList();
}
二、查看库中的数据表
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (c.moveToFirst()) {
while (!c.isAfterLast()) {
tables.add(c.getString(0));//数据表
c.moveToNext();
}
}
三、查看数据表中的数据
DbHelper db = new DbHelper(getContext(), databaseName);
Cursor c = db.getWritableDatabase().query(tableName, null, null, null, null, null, null);
String[] columnNames = c.getColumnNames();
ArrayList<String> datas = new ArrayList<String>();
StringBuilder sb = new StringBuilder();
if (c.moveToFirst()) {
while (!c.isAfterLast()) {
sb.setLength(0);
for (String columnName : columnNames) {
int columnIndex = c.getColumnIndex(columnName);
String colValue = c.getString(columnIndex);
sb.append(columnName).append(": ").append(colValue).append("\n");
}
datas.add(sb.toString());
Log.d("table_" + tableName, sb.toString());
c.moveToNext();
}
}
以上代码除了databaseList() 这种方法查了好久以外,其它还相对简单点
当中。查看app表的数据刚開始打算仿照root explorer做一个浏览数据的控件。可是想了一下感觉比較复杂,眼下还未实现
project的链接在此
https://github.com/droidcoffee/yolanda/tree/master/yolanda_Android
注意用法,将project作为一个libraryproject引入
同一时候改动主工程的project.properties文件添加例如以下配置就可以。
manifestmerger.enabled=true
这样能够使library中AndroidManifest.xml中配置的Activity生效。
也就是不用copy到主project中又一次配置了。
遇到问题的大家能够加群299306868
不root的情况下 查看App的数据表的更多相关文章
- Mysql无法启动情况下,如何恢复数据?
本文适用于,mysql无法启动,但数据文件未丢失的情况. Mysql因意外情况,导致无法启动,数据库未做备份的情况下,如何将数据迁移至其他数据库中. 原数据库地址:192.168.1.100(以下简称 ...
- 创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
正文原创 一:查询数据库实例有多少用户: [oracle@localhost ~]$ sqlplus / as sysdba; SQL*Plus: Release 11.2.0.3.0 Product ...
- 不root手机的情况下查看Android数据库
最近写Android的时候发现想要读取数据库很不方便,使用adb工具的方法需要root手机,而华为手机root十分麻烦,需要解除密码,一些品牌手机即使root了也没有sqlite3命令,总之十分麻烦. ...
- Android手机中怎么样在没root的情况下 修改 hosts 文件
工具 链接:https://pan.baidu.com/s/1AENluDCQ-2qYDPcE5K6l8g 密码:t7eu http://bbs.360.cn/forum.php?mod=view ...
- 如何在不使用try语句的情况下查看文件是否存在
如果你要确定文件存在的话然后做些什么,那么使用try是最好不过的 如果您不打算立即打开文件,则可以使用os.path.isfile检查文件 如果path是现有常规文件,则返回true.对于相同的路径, ...
- docker默认存储空间用完情况下,做迁移数据
由于docker默认存放数据路径为/var/lib/docker,但运行了一段时间后,发现/var/lib/docker下的目录文件过大,导致此分区空间不够用.通过以下方法,解决该问题. 如何避免: ...
- 在没有spineRunTime情况下手动使用spine数据
用spine做了一些简单UI动画,结果发现游戏用的cocos2dx版本太低了,无法集成spineRunTime,无奈只好把spine记下的关键帧数据抄到一个txt文件中,然后读取txt,再自己写代码播 ...
- 并发insert情况下会发生重复的数据插入问题
1.背景 用多线程接收推送的订单数据,把接收的订单数据存到一个表中,实现的需求是:如果接收的订单消息在数据库中已经存在,那么执行update操作:如果没有存在,那么执行insert操作代码逻辑: if ...
- 查看MYSQL中数据表占用的空间
由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...
随机推荐
- RAID的解释(附购买链接)
现在使用RAID6 早期 raid5+1hotspare 小型机有存储备份 就是这么多年没有恢复过~ 金融行业 数据万金 是的 磁盘阵列柜换控制器 型号太老 缓存数据问题 把存储都下线了 ...
- 14.6.3 Grouping DML Operations with Transactions 组DML操作
14.6.3 Grouping DML Operations with Transactions 组DML操作 默认情况下,连接到MySQL server 开始是以启动自动提交模式, 会自动提交每条S ...
- 【Demo 0003】Java基础-数组
本章学习要点: 1. 了解数组的基本概念: 2. 掌握数组使用方法: 一.数组的基本概念 1. 数组定义: 同一数据类型数据的集合,在 ...
- If-Modified-Since页面是否更新
第一次先请求某个网页,抓取到本地,假设文件名为 a.html.这时文件系统有个文件的修改时间. 第二次访问网页,如果发现本地已经有了 a.html,则向服务器发送一个 If-Modified-Sinc ...
- web desktop在线演示
http://mydesk.sinaapp.com 基于extjs的web desktop应用框架. 1.跨浏览器 2.动态载入所需css,js文件 3.权限管理 4.支持多语种 5.支持asp,js ...
- data URI scheme及其应用
data URI scheme通俗的来讲就是将一张图片直接塞到HTML中而不是通过HTTP请求去获取.这样从表面上看会降低一次HTTP的请求,实现了对于网页的优化(只是看了其它一些文章data URI ...
- form表单标签的enctype属性的作用
Enctype是指定将数据回发到server时浏览器使用的编码类型.其编码类型有下面三种 一. application/x-www-form-urlencoded 这是通过表单发送数据 ...
- NET单元测试的艺术
NET单元测试的艺术 开篇:上一篇我们学习基本的单元测试基础知识和入门实例.但是,如果我们要测试的方法依赖于一个外部资源,如文件系统.数据库.Web服务或者其他难以控制的东西,那又该如何编写测试呢?为 ...
- 关于window.history.back()后退问题
Windows下的window.history.back()后退后返回的不仅仅是前一个页而是前一个页的状态.假设一个页我改动了3次那必须后退3次才干回到前一个页.并且数据库中删除的数据依旧显示在上面感 ...
- LIS(最长的序列)和LCS(最长公共子)总结
LIS(最长递增子序列)和LCS(最长公共子序列)的总结 最长公共子序列(LCS):O(n^2) 两个for循环让两个字符串按位的匹配:i in range(1, len1) j in range(1 ...