不root的情况下 查看App的数据表

一直以来查看sqlite的数据库都需要root才能查看,但是公司的好多测试机root起来比较麻烦~~~

最近刚好项目上线,略闲,

于是决定写一个library工程便于以后调试代码

关键代码如下

一、查看当前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做一个浏览数据的控件。但是想了一下感觉比较复杂,目前还未实现

工程的链接在此

https://github.com/droidcoffee/yolanda/tree/master/yolanda_Android

注意使用方法,将工程作为一个library工程引入

同时修改主工程的project.properties文件增加如下配置即可。

manifestmerger.enabled=true

这样可以使library中AndroidManifest.xml中配置的Activity生效。

也就是不用copy到主工程中重新配置了。

遇到问题的大家可以加群299306868

时间: 2024-12-28 11:42:55

不root的情况下 查看App的数据表的相关文章

较复杂情况下小型数据库的数据迁移

虽然在操作之前作过一些测试,但主要考虑脚本的正确与否以及对数据库对象的影响.并没有完全在实际系统上运行.这也成为后来出现的一个问题没有预计到的根源.毕竟比较早的版本我没有用过:).那就是8.0.6的exp工具并支持到处数据到多个文件,file=file1,file2不能使用,而且也不清楚老的hp-unix是32位的时候支持大于2g的文件,而且8.0.6是否可以导出一个大于2G文件.后来出现问题之后经过查证系统支持,此避免使用磁带机或者文件压缩的方式(具体方法网络上有相关资料).   由于考虑到加

无工具的情况下测试APP性能

1. 打开命令行执行,adb shell dumpsys meminfo 2. 将命令行输出拷贝到本地文本文件,查找指定进程的pid.如多看阅读的pid:28902 3. 命令行中:adb shell 4. 进入adb shell后,输入:top | grep 28902.之后会实时显示指定进程的资源占用情况 第一列:PID - 进程id 第二列:PR - 优先级 第三列:CPU% - 瞬时CPU占用率 第四列:S - 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先

如何在不使用try语句的情况下查看文件是否存在

如果你要确定文件存在的话然后做些什么,那么使用try是最好不过的 如果您不打算立即打开文件,则可以使用os.path.isfile检查文件 如果path是现有常规文件,则返回true.对于相同的路径,islink()和isfile()都可以为true import os.path os.path.isfile(fname) 如果你需要确定它是一个文件. 从Python 3.4开始,该pathlib模块提供了一种面向对象的方法(pathlib2在Python 2.7中向后移植): from pat

关于mysql转移数据库时没有导出sql脚本的情况下,如何导入数据到新的数据库中

因为某些原因,在转移数据库的数据时,没有导出sql脚本,然后就被坑的不要不要的.不过,忙活了一下午,终于找到一种办法将数据库的文件夹直接导入到新的mysql的文件文件夹下的data文件中,就可以直接使用了. 具体步骤,往下看 在操作之前先要停止mysql的服务(net stop mysql),所有操作完成后,再启动mysql服务(net start mysql) (1)在mysql的安装文件中找到data文件夹 (2)将你原先data下的某个数据库中的文件夹拷到新的mysql的安装文件中的dat

C++中虚函数的理解,以及简单继承情况下的虚函数的表!

面向对象的三大特征=封装性+继承性+多态性 封装=将客观事物抽象成类,每个类对自身的数据和方法实行权限的控制 继承=实现继承+可视继承+接口继承 多态=将父类对象设置成为和一个或者更多它的子对象相等的技术, 用子类对象给父类对象赋值之后, 父类对象就可以根据当前赋值给它的子对象的特性一不同的方式运作 C++的空类有哪些成员函数 1.缺省构造函数 2.缺省拷贝构造函数 3.缺省析构函数 4.缺省赋值运算符 5.缺省取址运算符 6.缺省取址运算符const PS:只有当实际使用的时候才会去使用这些类

查看并分析数据表所占的空间

--1.新增TEMP TABLE create table #temptable ([name] varchar(50),[rows] bigint,resverved varchar(50),data varchar(50),index_size varchar(50),unused varchar(50)) --2.执行查询结果 select 'insert into #temptable exec sp_spaceused '''+name+'''' from sysobjects whe

Django打造在线教育平台_day_3: 搭建后台管理系统Xadmin之其他app的数据表注册

courses/adminx.py import xadmin from .models import Course, Lesson, Video, CourseResource class CourseAdmin(object): list_display = ['name', 'desc', 'detail', 'degree','learn_times', 'students','fav_nums','image','click_nums','add_time'] # 列表显示 searc

MyEclipse数据库教程:查看和编辑数据表

在MyEclipse中使用DB浏览器视图来浏览表和使用表数据.在本教程中,你将学习到: 浏览连接数据库 编辑表数据 持续时间:5分钟 没有MyEclipse?立即下载 1. 浏览表数据 使用表数据工作之前,先建立数据库连接. (1)在数据库浏览器中,展开连接节点. 浏览数据库结构 (2)展开数据结构来显示表的元数据,如表.视图和序列. 浏览表信息 2. 编辑表数据 数据库资源管理器工具提供了一个编辑表视图来帮助你在数据库中编辑已经存在的记录. (1)在数据库浏览器中,右键单击一个表,然后选择编辑

MySQL数据库查询某个库下有几张数据表

今天想了解一下我们项目中具体用了几张数据表,使用如下SQL检索语句即可: SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = '数据库名' GROUP BY table_schema;