安卓数据库 greenDAO3 使用之二数据库升级

博客: 安卓之家
掘金: jp1017
微博: 追风917
CSDN: 蒋朋的家
简书: 追风917

每日一景

Build Status

数据库升级


前面,我们学会了greenDAO的使用,下面来学习下升级。

今天研究了下升级,掌握方法了还是蛮简单的,这里对数据库的升级,仅仅是添加字段,添加表。对于删除,修改字段这里不多讲,因为sqlite数据库不适合此操作:

SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. It is not possible to rename a column, remove a column, or add or remove constraints from a table.

简单讲就是 SQlite 数据库仅能重命名表及增加字段,其他不支持,如果您一定要操作,也是可以的,来这里吧:

SQLite如何删除,修改、重命名列

1 升级版本号


上面我们说到,在 gradle 里修改 schemaVersion 即可,现在我们设置为2,编译下,我们可以看到 DaoMaster 里的schema变为2:

public static final int SCHEMA_VERSION = 2;

2 实体添加字段


比如我们的 Student 添加一个 score 字段, 这个可以直接写到 Student 里:

1
public String score;

编译后即可生成完整的 Student 实体及 DAO

3重写onUpgrade方法升级


这个就是重写 MyOpenHelper 的 onUpgrade 方法,该方法只在 schema 升级时执行一次.

在该方法里添加 score 字段即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
KLog.w("db version update from " + oldVersion + " to " + newVersion);

switch (oldVersion) {
case 1:
//不能先删除表,否则数据都木了
// StudentDao.dropTable(db, true);
StudentDao.createTable(db, true);
// 加入新字段 score
db.execSQL("ALTER TABLE 'STUDENT' ADD 'SCORE' TEXT;");

break;
}

}

4 测试


运行代码后,再添加三个数据,我们看下界面及数据库内容:

代码已上传至 GitHub:GreenDAO3_Demo

最后,非常感谢您的阅读,有任何疑问,可以后面评论,谢谢!

神奇的安卓开发网站:http://androidcat.com/

安卓开源库收集整理:https://github.com/XXApple/AndroidLibs

分享是一种美德,更是一种生活方式!!

也许你会说我是一个梦想者,但我不是唯一的一个。

悦分享,越快乐^_^

欢迎交流,转载请注明出处,谢谢!

文章目錄
  1. 1. 数据库升级
    1. 1.1. 1 升级版本号
    2. 1.2. 2 实体添加字段
    3. 1.3. 3重写onUpgrade方法升级
    4. 1.4. 4 测试
,
Fork me on GitHub