Android sqlite数据库的封装使用

一、  数据库初始化接口

数据库初始化之前我们需要建立表的对应字段,需使用KeyValueMap

类,该类解决了Java 中HashMap不能有相同建的问题,致使我们可以对数据库表中相同字段的存储。

对应的字段创建完后只需调用DBManager.InitDB(String DB_name,int DB_version,StringTableName,KeyValueMap<String, String> CreateSql);数据库和表所需的创建信息。

参数描述

参数名称

类型

意义

注释

DB_name

String

数据库名字

 

DB_version

int

数据库版本

 

TableName

String

表名

 

createSql

KeyValueMap<K,V>

表字段

 

 

调用示例:

// 建表参数

         KeyValueMap<String,String> parmas = new KeyValueMap<String,String>();

parmas.put("TEXT", "NAME");

parmas.put("TEXT", "SCORE");

// 初始化建库建表信息

DBManager.InitDB("Student_db", 1, "PersonTab",parmas);

二、     增、删、改、查接口使用

DBManager类封装了增删改查四个接口。

(1)添加数据

数据库的数据插入接口,

AddDate(String TabelName, KeyValueMap<String,String>hashmap)

参数描述

参数名称

类型

意义

注释

TableName

String

表名

 

hashmap

KeyValueMap<String,String>

参数值

 

         调用示例;

         sqliteDatebase= helper.getWritableDatabase();

ContentValuesvalues = new ContentValues();

for(int index = 0; index < hashmap.getSize(); index++) {

values.put(hashmap.getKey(index),hashmap.getValue(index));

}

sqliteDatebase.insert(TabelName,null, values);;

(2)  删除数据

数据库的删除接口,DelDate(StringTabelName,String arg0,String[] arg1)

参数描述

参数名称

类型

意义

注释

TabelName

Stirng

表名

 

arg0

string

查询条件

 

arg1

String[]

查询条件的参数

 

调用示例:

DBManager.getIntance(IfreeDemo.this).DelDate("PersonTab","SCORE=?", new String[] { "90" });

(3)  修改数据

数据库的修改接口,Update(StringTabelName,KeyValueMap<String, String> map,String arg1,String[] arg2);

参数描述

参数名称

类型

意义

注释

TabelName

String

 

 

map

KeyValueMap<K,V>

更新的数据集

 

arg1

String

查询条件

 

arg2

String[]

查询条件的参数

 

 

调用示例

sqliteDatebase =helper.getWritableDatabase();

ContentValuesvalues = new ContentValues();

for (int index =0; index < map.getSize(); index++) {

values.put(map.getKey(index), map.getValue(index));

}

  sqliteDatebase.update(TabelName, values, arg1,arg2);

(4)  查询数据

数据库查询接口

query(StringTableName, String[] arg0, String arg1, String[] arg2, String arg3, String arg4,String arg5);

返回类型为Cursor,使用之后需要将该游标关闭。

参数描述

参数名称

类型

意义

注释

TableName

String

表名

 

Arg0

String[]

要查询的列名

 

Arg1

string

查询条件

 

Arg2

Stirng[]

查询条件的参数

 

Arg3

string

对查询的结果进行分组

 

Arg4

string

对分组的结果进行限制

 

Arg5

string

对查询的结果进行排序

 

 

调用示例;

     Cursor cursor = DBManager.getIntance(IfreeDemo.this).query"PersonTab",new String[] { "NAME", "SCORE"}, "NAME=?",new String[] { "WUWEIDONG" }, null,null, null);

while(cursor.moveToNext()) {

                                  System.out.println(cursor.getString(cursor.getColumnIndex("NAME")));      System.out.println(cursor.getString(cursor.getColumnIndex("SCORE")));

}

cursor.close();



代码示例:


package proj.tool;

import proj.tool.R;
import Sqlite.DBManager;
import Sqlite.KeyValueMap;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

public class IfreeDemo extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ifree_demo);
		// 建表参数
		KeyValueMap<String, String> parmas = new KeyValueMap<String, String>();
		parmas.put("TEXT", "NAME");
		parmas.put("TEXT", "SCORE");
		// 初始化建库建表信息
		DBManager.InitDB("Student_db", 1, "PersonTab", parmas);
		findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				// 所需插入的数据
				KeyValueMap<String, String> msg = new KeyValueMap<String, String>();
				msg.put("NAME", "WUWEIDONG");
				msg.put("SCORE", "90");
				DBManager.getIntance(IfreeDemo.this).AddDate("PersonTab", msg);
			}
		});
		findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				 System.out.println("删除操作");
				 DBManager.getIntance(IfreeDemo.this).DelDate("PersonTab", "SCORE=?",
				 new String[] { "90" });
			}
		});
		findViewById(R.id.button3).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				// 查询
				Cursor cursor = DBManager.getIntance(IfreeDemo.this).query("PersonTab",
						new String[] { "NAME", "SCORE" }, "NAME=?",
						new String[] { "WUWEIDONG" }, null, null, null);
				while (cursor.moveToNext()) {
					System.out.println(cursor.getString(cursor.getColumnIndex("NAME")));
					System.out
							.println(cursor.getString(cursor.getColumnIndex("SCORE")));
				}
				cursor.close();
			}
		});
		findViewById(R.id.button4).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				 KeyValueMap<String, String> msg2 = new KeyValueMap<String, String>();
				 msg2.put("NAME", "WUWEIDONG2");
				 msg2.put("SCORE", "110");
				 DBManager.getIntance(IfreeDemo.this).Update("PersonTab", msg2, "NAME=?",
				 new String[] { "WUWEIDONG" });
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_ifree_demo, menu);
		return true;
	}

}



package Sqlite;

import java.util.ArrayList;

public class KeyValueMap<K,V> {
	class Entry{
		K k;
		V v;
		public Entry(K k,V v){
			this.k = k;
			this.v = v;
		}
		
		public K getK(){
			return k;
		}
		public V getV(){
			return v;
		}
		
		public void setK(K k){
			this.k = k;
		}
		
		public void setV(V v){
			this.v = v;
		}
	}
	
	private ArrayList<Entry> keyValue = new ArrayList<Entry>();
	
	public boolean put(K k,V v){
		if(k==null||v==null)
			return false;
		Entry e = new Entry(k, v);
		keyValue.add(e);
		return true;
	}
	
	public K getKey(int id){
		Entry e = keyValue.get(id);
		if(e==null)
			return null;
		else 
			return e.getK();
	}
	
	public V getValue(int id){
		Entry e = keyValue.get(id);
		if(e==null)
			return null;
		else
			return e.getV();
	}
	public int getSize(){
		return keyValue.size();
	}
}

package Sqlite;



import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
 * 创建数据库和表  
 * @author Administrator
 *
 */
public class DBHelper extends SQLiteOpenHelper{
	
	private static String DATEBASE_NAME;
	private static int DATEBASE_VERSION;
	private static String TableName;
	private static String sql; //建表sql语句
	/*************设置数据库、表名字和版本  start************/
	
	public static void setDATEBASE_NAME(String dATEBASE_NAME) {
		DATEBASE_NAME = dATEBASE_NAME;
	}
	
	public static void setSql(String sql) {
		DBHelper.sql = sql;
	}

	public static void setDATEBASE_VERSION(int dATEBASE_VERSION) {
		DATEBASE_VERSION = dATEBASE_VERSION;
	}
	public static void setTableName(String tableName) {
		TableName = tableName;
	}
	/************设置数据库、表名字和版本  end***********/
	public DBHelper(Context context) {
		super(context, DATEBASE_NAME, null, DATEBASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		db.execSQL("ALTER TABLE "+TableName+" ADD COLUMN other STRING");  
	}
}

package Sqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * 使用规则:需先设置数据库名字、表名、版本号信息
 * 
 * @author Administrator
 */
public class DBManager {
	public static DBManager DB;
	public static DBHelper helper;
	public static SQLiteDatabase db;
	private static String DATEBASE_NAME;
	private static int DATEBASE_VERSION;
	private static String TableName;
	private static String sql;
	private static SQLiteDatabase sqliteDatebase;

	/************* 设置数据库、表名字和版本 start ************/
	public static String getDATEBASE_NAME() {
		return DATEBASE_NAME;
	}

	public static void setDATEBASE_NAME(String dATEBASE_NAME) {
		DATEBASE_NAME = dATEBASE_NAME;
	}

	public static int getDATEBASE_VERSION() {
		return DATEBASE_VERSION;
	}

	public static void setDATEBASE_VERSION(int dATEBASE_VERSION) {
		DATEBASE_VERSION = dATEBASE_VERSION;
	}

	public static String getTableName() {
		return TableName;
	}

	public static void setTableName(String tableName) {
		TableName = tableName;
	}

	/**
	 * 初始化
	 * @param DB_name 数据库名字
	 * @param DB_version 数据库版本
	 * @param TbaleName 表名
	 * @param CreateSql 表字段
	 */
	public static void InitDB(String DB_name,int DB_version,String TableName,KeyValueMap<String, String> CreateSql){
		DBManager.setDATEBASE_NAME(DB_name);
        DBManager.setDATEBASE_VERSION(DB_version);
        DBManager.setTableName(TableName);
        DBManager.sqlTable(CreateSql);
	}
	
	/************ 设置数据库、表名字和版本 end ***********/
	private DBManager(Context context) {
		DBHelper.setDATEBASE_NAME(getDATEBASE_NAME());
		DBHelper.setDATEBASE_VERSION(getDATEBASE_VERSION());
		DBHelper.setTableName(getTableName());
		DBHelper.setSql(sql);
		helper = new DBHelper(context);
		db = helper.getWritableDatabase();
	}

	public static DBManager getIntance(Context context){
		if(DB==null){
			DB = new DBManager(context);
		}
		return DB;
	}
	
	/**
	 * 创建表的sql语句 该法方法id自增长
	 * 
	 * @param hashmap
	 *            字段和参数
	 */
	public static void sqlTable(KeyValueMap<String, String> hashmap) {
		StringBuffer sb = new StringBuffer();
		for (int index = 0; index < hashmap.getSize(); index++) {
			String key = hashmap.getKey(index);
			String value = hashmap.getValue(index);
			sb.append(value).append(" ").append(key).append(",");
		}
		String value = sb.toString();
		String result = value.substring(0, value.length() - 1);
		sql = "create table " + TableName
				+ "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + result + ")";
	}

	/**
	 * 创建表的sql语句
	 * 
	 * @param cpysql
	 *            建表的sql语句
	 */
	public static void sqlTabel(String cpysql) {
		sql = cpysql;
	}

	/**
	 * 添加数据
	 * 
	 * @param TabelName
	 *            表名
	 * @param hashmap
	 *            参数值
	 */
	public void AddDate(String TabelName, KeyValueMap<String, String> hashmap) {
		sqliteDatebase = helper.getWritableDatabase();
		ContentValues values = new ContentValues();
		for (int index = 0; index < hashmap.getSize(); index++) {
			values.put(hashmap.getKey(index), hashmap.getValue(index));
		}
		sqliteDatebase.insert(TabelName, null, values);
	}


	/**
	 * 删除数据
	 * @param TabelName 第一个参数String:表名
	 * @param arg0 第二个参数String:查询条件
	 * @param arg1 第三参数String[]:查询条件的参数
	 */
	public void DelDate(String TabelName,String arg0,String[] arg1) {
       sqliteDatebase = helper.getWritableDatabase();
       sqliteDatebase.delete(TabelName, arg0, arg1);
	}

	/**
	 * 更新数据
	 * @param TabelName
	 * @param map 更新的数据
	 * @param arg1 查询条件
	 * @param arg2 查询条件的参数
	 */
	public void Update(String TabelName,KeyValueMap<String, String> map,String arg1,String[] arg2) {
		sqliteDatebase = helper.getWritableDatabase();
		ContentValues values = new ContentValues();
		for (int index = 0; index < map.getSize(); index++) {
			values.put(map.getKey(index), map.getValue(index));
		}
		sqliteDatebase.update(TabelName, values, arg1, arg2);
	}

	/**
	 * 查询数据
	 * @param TableName 第一个参数String:表名
	 * @param arg0 第二个参数String[]:要查询的列名
	 * @param arg1 第三个参数String:查询条件
	 * @param arg2 第四个参数String[]:查询条件的参数
	 * @param arg3 第五个参数String:对查询的结果进行分组
	 * @param arg4 第六个参数String:对分组的结果进行限制
	 * @param arg5 第七个参数String:对查询的结果进行排序
	 * @return
	 */
	public Cursor query(String TableName, String[] arg0, String arg1,
			String[] arg2, String arg3, String arg4, String arg5) {
		sqliteDatebase = helper.getReadableDatabase();
		Cursor cursor = sqliteDatebase.query(TableName, arg0, arg1, arg2, arg3,
				arg4, arg5);
		return cursor;
	}

}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值