升级数据库增加字段之OrmLite

来源:互联网 发布:飞升坐骑升阶数据 编辑:程序博客网 时间:2024/05/16 08:45
使用OrmLite数据库 在升级过程中,增加表字段:
首先我们写自己的DbOpenHelper继承OrmLiteliteOpenHelper,定义数据库名称,版本号,初始化用户表
public classDbOpenHelperextends OrmLiteSqliteOpenHelper{

 private static finalStringTABLE_NAME="text.db";

 private static final intversion=1;

privateDao<UserInfo,Integer> userDao;
}

创建用户表
@Override
 public voidonCreate(SQLiteDatabasedatabase,ConnectionSourceconnectionSource){


 try{
// 创建用户表
 TableUtils.createTable(connectionSource,UserInfo.class);

 }catch(SQLExceptione){
 e.printStackTrace();
 }

}

 @Override
 public voidonUpgrade(SQLiteDatabasedatabase,ConnectionSourceconnectionSource,intoldVersion,intnewVersion){


}
//得到userDao
publicDao<UserInfo,Integer>getUserDao()throwsSQLException{

 if(userDao ==null){
userDao=getDao(UserInfo.class);
 }
 returnuserDao;
}

定义表类
@DatabaseTable(tableName="user_db")
public classUserInfo{

 @DatabaseField
 private int id;
 @DatabaseField
 privateString name;
 @DatabaseField
 privateString age;}

在主类中执行
helper.getUserDao().create(list);   存入数据

查询数据:
 
public voidsearchUser(){
 try{
 List<UserInfo>userInfos=helper.getUserDao().queryForAll();
 for(UserInfoinfo:userInfos){
 System.out.println(info.toString());
 }

}catch(SQLExceptione){
 e.printStackTrace();
 }
}
得到结果:
06-08 19:49:10.200 21958-21958/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=1, name='张三', age='25'}
06-08 19:49:10.200 21958-21958/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=2, name='李四', age='24'}
06-08 19:49:10.200 21958-21958/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=3, name='李武', age='24'}


下面在bean中加入新的字段address,版本号+1在Helper的onUpgrade方法中增加如下代码:

 private static final intversion=2;
@Override
public voidonUpgrade(SQLiteDatabasedatabase,ConnectionSourceconnectionSource,intoldVersion,intnewVersion){

 try{
 if(oldVersion<2){
 getUserDao().executeRawNoArgs("ALTER TABLE user_db ADD COLUMN address VARCHAR(60)");
 }
}catch(SQLExceptione){
 e.printStackTrace();
 }


}

在主类中增加新用户
UserInfouserInfo4=newUserInfo();
userInfo4.setId(4);
userInfo4.setName("李武");
userInfo4.setAge("24");
userInfo4.setAddress("北京天源股业绩之");

运行主类得出结果
06-08 20:19:25.160 16917-16917/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=1, name='张三', age='25', address='null'}
06-08 20:19:25.160 16917-16917/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=2, name='李四', age='24', address='null'}
06-08 20:19:25.160 16917-16917/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=3, name='李武', age='24', address='null'}
06-08 20:19:25.160 16917-16917/com.hanshaoda.butterkinfetest I/System.out: UserInfo{id=4, name='李武', age='24', address='北京天源股业绩之'}
数据库表中加入address字段,不影响之前数据正常展示,增加字段升级数据库成功。

删除字段
getUserDao().executeRawNoArgs("ALTER TABLE user_db DROP COLUMN age")
二、修改字段名:
alter table 表名 rename column A to B
三、修改字段类型:
alter table 表名 alter column UnitPrice decimal(18, 4) not null 
三、修改增加字段:
alter table 表名 ADD 字段 类型 NOT NULL Default 0


原创粉丝点击