android 数据库 升级设计

很久以前设计的数据库创建与升级的方法,此设计避免了升级的时候需要多处修改的弊端。 代码如下:


publicclassDBAdatper{
privateDBHelperdbHelper;
privateSQLiteDatabase_db;
privatefinalContextcontext;
publicDBAdatper(Contextcontext){
super();
this.context=context;
dbHelper=newDBHelper(context,DATABASE_NAME,null,DB_VERSION);
_db=dbHelper.getWritableDatabase();
}
//数据库名
privatestaticfinalStringDATABASE_NAME="test";
//建表语句此部分只是用户第一次安装的时候会在oncreate方法中调用
//请注意CREATE部分不要做任何修改所有的数据库修改都应该在update_sql中进行
privatestaticfinalStringCREATE[]=newString[]{
"createtabletype(tidintegerprimarykey,namevarchar(50));",
};
//数据库更新升级,此部分会在onupdate方法中调用
//请注意所有的数据库结构的修改操作都要在此处进行否则会出现升级混乱的问题
privatestaticString[]UPDATE=newString[]{
};
//当前数据库版本请保证DB_VERSION的值等于update_sql.length+1
privatestaticfinalintDB_VERSION=UPDATE.length+1;
/**
*数据库创建对象
*
*@authorpopo
*
*/
privatestaticclassDBHelperextendsSQLiteOpenHelper{
publicDBHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){
super(context,name,factory,version);
//TODOAuto-generatedconstructorstub
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
//TODOAuto-generatedmethodstub
//创建表结构
intsql_numbers=CREATE.length;
//执行建表语句
for(inti=0;i<sql_numbers;i++){
try{
db.execSQL(CREATE[i]);
}catch(Exceptione){
//TODO:handleexception
}
}
//执行升级部分保证新装用户也可以执行到升级部分
onUpgrade(db,1,DB_VERSION);
}
/**
*数据库升级部分
*/
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
//TODOAuto-generatedmethodstub
intversion=newVersion-1;
//由于数组的长度是从0开始的而数据库版本是从一开始所以i=oldVersion-1
for(inti=oldVersion-1;i<version;i++){
try{
db.execSQL(UPDATE[i]);
}catch(Exceptione){
//TODO:handleexception
}
}
}
}
}
这样数据库升级只在UPDATE数组中添加需要升级的SQL语句就可以了 ,不需要修改 DB_VERSION 不需要 修改 oncreate , onUpgrade 。
有什么不妥之处,望指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值