【Android】内嵌数据库IDE(可视化操作类)

Android开发的朋友应该对数据库内容的管理深有体会,想看一下放入数据库的内容都不是很方便,要么用root的设备导出来看或用第三方的手机版的ide。但是都要求root之后。最近一直在想android方便快捷的方法,今天刚好弄到了数据库这块。就写了一个Activity专门用来看数据库的,功能就是看对应数据库的表及表中的数据库。

效果图

刚写还没来得及美化,后面在使用过程中再时行完善。

DBIDEActivity.java

import java.util.ArrayList;
import java.util.List;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

/**
* 数据库图形界面。
* @author Harlan Song
* @email [email protected]
* @date 2014年4月29日
*/
public class DBIDEActivity extends Activity implements OnItemClickListener {
private boolean table = true;
List<String> tables = new ArrayList<String>();
SQLiteDatabase db = null;
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("tables");
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(this);
horizontalScrollView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
listview = new ListView(this);
horizontalScrollView.addView(listview,new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
setContentView(horizontalScrollView);
listview.setOnItemClickListener(this);
db = SQLiteHelper.getInstanceDB(this);
loadTable();
}

/**
* 加载所有表。
*/
private void loadTable(){
String sql = "SELECT name FROM sqlite_master WHERE type=‘table‘;";
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext()){
tables.add(cursor.getString(0));
}
cursor.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, tables);
listview.setAdapter(adapter);
}

private class TableAdapter extends BaseAdapter{
private ArrayList<String[]> datas;
public TableAdapter(ArrayList<String[]> datas){
this.datas = datas;
}
@Override
public int getCount() {
return datas.size();
}

@Override
public Object getItem(int position) {
return datas.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout layout_line = new LinearLayout(DBIDEActivity.this);
layout_line.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
String[] data = datas.get(position);
for (int i = 0; i < data.length; i++) {
TextView tvName = new TextView(DBIDEActivity.this);
tvName.setLayoutParams(new LayoutParams(200, LayoutParams.WRAP_CONTENT));
tvName.setText(data[i]);
layout_line.addView(tvName);
if(position == 0 ){
tvName.setPadding(0, 5, 0, 5);
tvName.setTextSize(15);
tvName.setBackgroundColor(Color.GRAY);
//tvName.setGravity(Gravity.CENTER_HORIZONTAL);
}else{
tvName.setTextSize(10);
}

}
return layout_line;
}
}

@Override
public void onBackPressed() {
if(table ==false){
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, tables);
listview.setAdapter(adapter);
table = true;
setTitle("tables");
}else{
super.onBackPressed();
}
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if(table){
String tableName = tables.get(position);
loadTableData(tableName);
}
}

/**
* 加载表数据。
* @param tableName
*/
private void loadTableData(String tableName){
setTitle(tableName);
String sql = "select * from " + tableName;
Cursor cursor =db.rawQuery(sql, null);
int columnCount = cursor.getColumnCount();
ArrayList<String[]> datas = new ArrayList<String[]>();
String[] names = new String[columnCount];
for (int i = 0; i < columnCount; i++) {
names[i] = cursor.getColumnName(i);
}
datas.add(names);
while(cursor.moveToNext()){
String[] data = new String[columnCount];
for (int i = 0; i < columnCount; i++) {
data[i] = cursor.getString(i);
}
datas.add(data);
}
cursor.close();
table = false;
listview.setAdapter(new TableAdapter(datas));
}
}

View
Code

就一个Activity,对于一个经常操作数据库的项目来说多个类没什么的。里面的SQLiteDatabase换成系统自带的就可以了。

【Android】内嵌数据库IDE(可视化操作类),码迷,mamicode.com

时间: 2024-10-11 01:39:58

【Android】内嵌数据库IDE(可视化操作类)的相关文章

内嵌数据库

常见的内嵌数据库 Sqlite  (推荐) SQLite 第一个Alpha 版本诞生于2000 年5 月.. SQLite 是一款轻型的数据库,它的设计目标是嵌入 式的,它占用资源非常的低,在嵌入式设备中,可能只需要几百K 的内存就够了. 它能够支持 Windows/Linux/Unix 等等主流的操作系统,多程序语言相结合,比如PHP .Java 等.同时支持以加密方式存储数据信息. 优点 :占用内存非常小,适合内存受限设备(如手持设备). 官方网站 :http://www.sqlite.or

cocos2d-x调用android内嵌浏览器打开网页

cocos2d-x调用android内嵌浏览器打开网页,可以从入口传入网址,C++调用android 的api即可实现.方法也很简单 1. 修改"cocos2dx\platform\win32"下的CCApplication.h和CCApplication.cpp,添加函数 头文件声明 void openURL(const char* pszUrl); cpp文件实现: void CCApplication::openURL(const char* pszUrl) { ShellExe

Android 学习心得(2)——Android内置数据库SQLite

一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本),虽然有着五种数据之分,但是在内部SQLite存储数据是无类型的,也就是说你可以在integer中存入char数据之类的.  二.要点: INTEGER PRIMARY KEY中只能存放64位整数 在编写CREATE TABLE时候可以省略字段后面的数据类型 SQLite中可以解析大部分标准SQL语句

Html 内嵌 选择器属性 Dom操作 JavaScript 事件

HTML标签: 一.通用标签(一般标签) 1.格式控制标签 <font color="#6699aa" face="楷体" size="24">文字</font><b>加粗</b><i>倾斜</i><u>下划线</u><br/>换行 ** 空格 **<center>居中</center> * 2.内容标签 <h

Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity

在一个大的Android项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机.但是这些网页中有好多链接,但是这些链接有些内容有是我们客户端已经实现的,比如有一个注册链接,其实客户端也实现了注册功能,我们不想再继续跳转到网页注册,而是打开客户端某个注册Activity,可以通过以下方式来实现: xml 文件,如下: java代码如下: ? 1 2 3 4 5 6 7 8 9

C#.net数据库访问及其操作类

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Text; using System.Text.RegularExpressions; using System.Security; /// <summ

Android中如何使用命令行查看内嵌数据库SQLite3

在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Android程序中,一般创建的数据库存放在 /data/data/[应用程序包名]/databases 的目录下. [2]cd 命令:文件夹跳转命令.ls 命令:查看某个文件夹下面有哪些文件. [3]使用 "sqlite3 [数据库名称] " 命令来对某数据库进行一系列的操作. [4]在经过第[3]步骤后,可以使用 .tables 命令查看某数据库中包含哪些表.若要查询某表中包含的数据,在 sqlit

一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵.自己刚好有空又有兴趣,于是研究了下.没曾想竟也研究出来了.事后我对整个操作过程整理了下,方便他人也提升自己. 废话少扯.以下上干货. 我的思路是:在点击h5上的分享图标时.触发js事件,在这里面能够对当前设备的操作系统和浏览

一处折腾笔记:Android内嵌html5添加原生微信分享的解决办法

有一段时间没有瞎折腾了.这周一刚上班萌主过来反映说:微信里面打开聚客宝,分享功能是可以的(这里是用微信自身的js-sdk实现的),但是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵.自己刚好有空又有兴趣,于是研究了下,没曾想竟也研究出来了.事后我对整个操作过程整理了下,方便他人也提升自己. 废话少扯,下面上干货. 我的思路是:在点击h5上的分享图标时,触发js事件,在这里面可以对当前设备的操作系统和浏览器