Database
SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本
下面是这个类的几个方法:
方法名 返回类型 描述 备注
getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库
onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用
onOpen(SQLiteDatabase db) void 打开数据库
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库
close() synchronized void 关闭所有打开的数据库对象
----------------------------------------------------------------------
package com.example.xxxx;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
public static final String FILE_CHAMELEON_DATABASE = "omadm.db";
public static final String TABLE_MASTER = "master";
public static final String MASTER_FIELD_KEY = "key";
public static final String MASTER_FIELD_VALUE = "value";
public static final String MASTER_FIELD_TYPE = "type";
public static final String MASTER_FIELD_RECOVERYONRTN = "recoveryonrtn";
public static final String MASTER_FIELD_RECOVERYONSCRTN = "recoveryonscrtn";
public static final String MASTER_FIELD_UPDATEPRI = "updatepri";
public static final String MASTER_FIELD_LAST_UPDATE = "last_update";
public static final String MASTER_TRG_UPDATE = "master_update_trg";
public static final String TABLE_MASTER_CREATE = "CREATE TABLE "
+ TABLE_MASTER + "(" + MASTER_FIELD_KEY
+ " TEXT PRIMARY KEY NOT NULL," + MASTER_FIELD_VALUE + " TEXT,"
+ MASTER_FIELD_TYPE + " INTEGER DEFAULT 0,"
+ MASTER_FIELD_RECOVERYONRTN + " INTEGER DEFAULT 0,"
+ MASTER_FIELD_RECOVERYONSCRTN + " INTEGER DEFAULT 0,"
+ MASTER_FIELD_UPDATEPRI + " INTEGER DEFAULT 0,"
+ MASTER_FIELD_LAST_UPDATE + " INTEGER)";
public static final String TABLE_MASTER_DROP = "DROP TABLE IF EXISTS "
+ TABLE_MASTER;
public static final String MASTER_TRG_UPDATE_DROP = "DROP TRIGGER IF EXISTS "
+ MASTER_TRG_UPDATE;
public DBHelper(Context context) {
super(context, FILE_CHAMELEON_DATABASE, null, 5);
}
// 该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法
@Override
public void onCreate(SQLiteDatabase sqlitedatabase) {
sqlitedatabase.execSQL(TABLE_MASTER_CREATE);
//sqlitedatabase.execSQL(MASTER_TRG_INSERT_CREATE);
//sqlitedatabase.execSQL(MASTER_TRG_UPDATE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase sqlitedatabase, int oldVersion,
int newVersion) {
if (oldVersion != newVersion) {
//sqlitedatabase.execSQL(MASTER_TRG_UPDATE_DROP);
//sqlitedatabase.execSQL(MASTER_TRG_INSERT_DROP);
sqlitedatabase.execSQL(TABLE_MASTER_DROP);
onCreate(sqlitedatabase);
}
}
}
--------------------------------------------------