sqliteOpenHelper是sqliteDatabase的一个帮助类,用来管理数据库的创建和版本更新。一般的用法是定义一个类继承sqliteOpenHelper,并实现两个回调方法,OnCreate(sqliteDatabase db)和onUpgrade(sqliteDatabse,int oldVersion,int newVersion)来创建和更新数据库。对数据库中的表数据进行更新时,如删除字段、添加字段、增加约束等,需要更新数据库,即更新数据库版本号VERSION,此时在数据的实现方法中调用DataBaseHelper 类时,就需要使用public DataBaseHelper (Context context,int version)此构造方法。
下面是我写的继承sqliteOpenHelper的帮助类
实例:DataBaseHelper.java
import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteDatabase.CursorFactory;
import android.database.sqlite.sqliteOpenHelper;
public class DataBaseHelper extends sqliteOpenHelper {
private static final int VERSION=1;
public static final String DBNAME = "diary.db";
//sqliteOpenHelper子类必须要的一个构造函数,传递一个参数的, 数据库名字和版本号都写死了
public DataBaseHelper (Context context){
//必须通过super 调用父类的构造函数
super(context,DBNAME,null,VERSION);
}
//数据库的构造函数,用于更新数据库
public DataBaseHelper (Context context,int version){
super(context,version);
}
//回调函数,第一次创建时才会调用此函数,创建一个数据库
@Override
public void onCreate(sqliteDatabase db) {
String sql = "CREATE TABLE diary (diaryId integer primary key autoincrement,"
+ "title TEXT,time TEXT,week TEXT,weather TEXT,body TEXT)";
db.execsql(sql);
}
//回调函数,当你构造DBHelper的传递的Version与之前的Version调用此函数
@Override
public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
if(oldVersion == 1 && newVersion == 2.1){
try{
db.beginTransaction();
String upgradesql="ALTER TABLE diary ADD COLUMN sid TEXT UNIQUE";
db.execsql(upgradesql);
db.setTransactionSuccessful();
}catch(Exception ex){
ex.printStackTrace();
}finally{
db.endTransaction();
}
}
}
}