升级数据库增加字段之OrmLite

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yeluoxiaoxin/article/details/76253079
使用OrmLite数据库 在升级过程中,增加表字段:
首先我们写自己的DbOpenHelper继承OrmLiteliteOpenHelper,定义数据库名称,版本号,初始化用户表
public class DbOpenHelper extends OrmLiteSqliteOpenHelper {

  private static final String TABLE_NAME = "text.db" ;

  private static final int version = 1 ;

private Dao < UserInfo , Integer > userDao ;
}

创建用户表
@Override
  public void onCreate ( SQLiteDatabase database , ConnectionSource connectionSource ) {


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

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

}

  @Override
  public void onUpgrade ( SQLiteDatabase database , ConnectionSource connectionSource , int oldVersion , int newVersion ) {


}
//得到userDao
public Dao < UserInfo , Integer > getUserDao () throws SQLException {

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

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

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

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

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

} catch ( SQLException e ) {
  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 int version = 2 ;
@Override
public void onUpgrade ( SQLiteDatabase database , ConnectionSource connectionSource , int oldVersion , int newVersion ) {

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


}

在主类中增加新用户
UserInfo userInfo4 = new UserInfo () ;
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


猜你喜欢

转载自blog.csdn.net/yeluoxiaoxin/article/details/76253079