使用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