package com.example.test_20131218;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DBAdapter {
private static DBAdapter INSTANCE = null;
private DBOpenHelper mHelper = null;
private SQLiteDatabase mDB = null;
private DBAdapter(Context context){
mHelper = new DBOpenHelper(context);
mDB = mHelper.getWritableDatabase();
}
public static DBAdapter getInstance(Context context){
if(INSTANCE == null){
return new DBAdapter(context);
}
return INSTANCE;
}
public void open(){
if(mDB == null){
mDB = mHelper.getWritableDatabase();
}
}
}
package com.example.test_20131218;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBOpenHelper extends SQLiteOpenHelper {
/***
* 数据库的版本必须大于0,否则报错:
* java.lang.RuntimeException: Unable to start activity
* ComponentInfo{com.example.test_20131218/
* com.example.test_20131218.MainActivity}: java.lang.IllegalArgumentException: Version must be >= 1, was 0
*/
public static final int DB_VERSION = 5;
public static final String DB_NAME = "test20131218.db";
public DBOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
/**
* 这个方法
* 1、在第一次打开数据库的时候才会走
* 2、在清除数据之后再次运行-->打开数据库,这个方法会走
* 3、没有清除数据,不会走这个方法
* 4、数据库升级的时候这个方法不会走
*/
Log.i("xinye", "#############数据库创建了##############:" + DB_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
/**
* 1、第一次创建数据库的时候,这个方法不会走
* 2、清除数据后再次运行(相当于第一次创建)这个方法不会走
* 3、数据库已经存在,而且版本升高的时候,这个方法才会调用
*/
Log.i("xinye", "#############数据库升级了##############:" + DB_VERSION);
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
/**
* 执行数据库的降级操作
* 1、只有新版本比旧版本低的时候才会执行
* 2、如果不执行降级操作,会抛出异常
*/
Log.i("xinye", "#############数据库降级了##############:" + DB_VERSION);
super.onDowngrade(db, oldVersion, newVersion);
}
}