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);
        }
    }
}

--------------------------------------------------

posted @ 2015-01-19 13:41  牧 天  阅读(435)  评论(0)    收藏  举报