private static class DatabaseHelper extends SQLiteOpenHelper { /** * @param context 上下文 * @param name 数据库名称 * @param factory CursorFactory实例 * @param version 数据库版本号 */ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); Log.i(MLog.tag, "++DatabaseHelper++"); } @Override public void onCreate(SQLiteDatabase db) { Log.i(MLog.tag, "++DatabaseHelper.onCreate.begin++"); db.execSQL(SQL_CREATE_READER); db.execSQL(SQL_CREATE_READ_PERIOD); db.execSQL(SQL_CREATE_READ_BOOK); db.execSQL(SQL_CREATE_READ); Log.i(MLog.tag, "++DatabaseHelper.onCreate.end++"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.i(MLog.tag, "++DatabaseHelper.onUpgrade.begin++"); db.execSQL("DROP TABLE IF EXISTS " + ReaderColumns.TB_NAME); db.execSQL("DROP TABLE IF EXISTS " + ReadPeriodColumns.TB_NAME); db.execSQL("DROP TABLE IF EXISTS " + ReadBookColumns.TB_NAME); db.execSQL("DROP TABLE IF EXISTS " + ReadColumns.TB_NAME); onCreate(db); Log.i(MLog.tag, "++DatabaseHelper.onUpgrade.end++"); } }
SQLiteOpenHelper构造方法
创建helper对象,用于创建、打开、管理数据库;想要创建、打开数据库,必须调用方法getWritableDatabas(或getReadableDatabas)
参数列表:
- context 用于打开、创建数据库
- name 数据库文件的名称;null表示数据库存在于内存
- factory 用于创建cursor对象;默认null
- version 数据库版本号;如果这个数据库是旧的,调用onUpgrade、升级数据库;如果这个数据库是新的,调用onDowngrade、降级数据库
SQLiteOpenHelper.onCreate方法
在数据库第1次被创建时调用;这个方法应该完成数据库表的创建和初始化操作
参数列表:
- db 数据库对象
public static final String DB_NAME = "GasRead.db"; public static final int DB_VERSION = 1; private Context mContext; private DatabaseHelper dbHelper; private SQLiteDatabase db; public DBGasRead(Context context) { this.mContext = context; dbHelper = new DatabaseHelper(mContext, DB_NAME, null, DB_VERSION); db = dbHelper.getWritableDatabase(); } public void destroy() { Log.i(MLog.tag, "++DBGasRead.destroy.begin++"); // Close the database. if(db != null) { db.close(); } // Close any open database object. if(dbHelper != null) { dbHelper.close(); } Log.i(MLog.tag, "++DBGasRead.destroy.end++"); }