DBOpenHelp

package com.lilin.sqlite.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

/**
 * 
 * @author lilin
 * @date 2012-3-22 下午07:40:26
 * @annotation 数据库创建帮助类
 */
public class DBOpenHelp extends SQLiteOpenHelper {
	// SQLite采用的是动态数据类型,会根据存入值自动判断。
	// 五种常用的数据类型:
	// NULL: 这个值为空值
	// varchar(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。
	// char(n):长度固定为n的字串,n不能超过 254。
	// integer: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
	// real: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
	// text: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
	// blob: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改变格式。
	// data :包含了 年份、月份、日期。
	// time: 包含了 小时、分钟、秒。

	public static final int VERSION = 1;

	public DBOpenHelp(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	public DBOpenHelp(Context context, String name) {
		this(context, name, VERSION);
	}

	public DBOpenHelp(Context context, String name, int version) {
		this(context, name, null, version);
	}

	// 在数据库第一次生成的时候会调用这个方法,也就是说,只有在创建数据库的时候才会调用,
	// 当然也有一些其它的情况,一般我们在这个方法里边生成数据库表。
	@Override
	public void onCreate(SQLiteDatabase db) {
		// 二进制资源表
		db.execSQL("create table res(" //
				+ "key nvarchar,"//
				+ "value blob" //
				+ ")");

		// 配置表:用于保存一些全局变量
		db.execSQL("create table config(" //
				+ "key nvarchar," //
				+ "value nvarchar"//
				+ ")");

		// 类别表
		db.execSQL("create table category("//
				+ "id integer primary key autoincrement,"// 主键
				+ "name nvarchar,"// 名称
				+ "value nvarchar,"// 排序字段:权值
				+ "uptime nvarchar,"// 更新时间
				+ "decribe nvarchar"// 描述字段
				+ ")");
	}

	// 当数据库需要升级的时候,Android系统会主动的调用这个方法。
	// 一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub

	}
}
 

相关推荐