Android数据库升级总结

1、数据库升级概念

在开发应用时,我们经常会用数据库来保存数据。 但是随着应用的版本不断升级, 之前的数据库结构可能不太适应当前版本, 这时就需要升级数据库, 使之符合当前需求。类似应用升级, 数据库的升级也需要version来标明。 不同的是应用版本的升级, 只需更改AndroidManifest.xml文件中的versionCode与versionName即可。 但是数据库的升级需要在代码里面修改。

2、数据库升级原理

2.1、升级原理分析

在使用数据库时, 我们会定义一个扩展了抽象类SQLiteOpenHelper的子类。例如,

图1

图1 DatabaseHelper

其中, 构造函数调用了父类即SQLiteOpenHelper的构造方法, 其中包含了一个version的参数。这个参数即是数据库的版本。 所以,我们可以通过修改version来实现数据库的升级。 一般的,在数据库初始开发时设置为1,然后每次升级时递增。
其次,在SQLiteOpenHelper中还定义了两个抽象的方法,onCreate( )、onUpgrade( )。
这两个方法顾名知义对应着数据库的创建和升级两个过程。我们一般在onCreate( )方法中进行创建表等操作,在onUpgrade( )方法中进行修改表等操作。 例如,

图2

图2 实现的方法

当在某个应用1.0版时, 设置构造方法中的参数version为1。我们在使用SQLiteOpenHelper访问数据库时,系统会读取该参数。如果该参数为0,表示之前没有数据库文件, 则将version为1写入数据库,并调用onCreate( )方法创建数据库。当需要升级数据库时将version设置为2。在应用访问数据库时就会去读取数据库中存储的数据库版本,如果发现不一样(变大), 则会调用onUpgrade( )方法,触发升级逻辑。

2.2、具体代码分析

2.2.1、SQLiteOpenHelper类构造方法

图3

图3 SQLiteOpenHelper构造方法

其中, CursorFactory和DatabaseErrorHandler一般是传null。 我们可以看到,构造SQLiteOpenHelper对象时如果数据库版本号低于1是会报异常的。

2.2.2、SQLiteOpenHelper的使用

在访问数据库时,我们一般会new一个SQLiteHelper的对象。

图4

图4 SQLiteOpenHelper的使用

其中,getWritableDatabase( )会调用getDatabaseLocked(false)方法,在该方法中实现了对数据库版本检查和升级等的逻辑。其中部分代码如下,

图5

图5 数据库升级逻辑

我们可以看到,系统会先调用getVersion( )获取当前数据库版本。如果没有数据库文件存在,则getVersion( )方法会返回0. 从而调用onCreate( )方法。如果version不为0,则会比较当前version与数据库中保存的version值从而决定是升级还是降级。对于降级系统会抛出异常,如下

图6

图6 降级逻辑

而升级的操作,则需要我们在子类中实现。最后,系统会将当前数据库版本version值保存到数据库中。

3、数据库升级注意事项

在升级数据库时,如果我们需要在原有表的基础上增加一个字段,那么需要注意的是,一定要为老数据的的新添字段设置默认值。否则,在查询该数据表时会返回空。增加列并设置默认值的方法如下:

图7

图7 增加字段并设置默认值

其次,数据库的升级是对于升级用户的而言的。但是对于新用户系统会新创建数据库,所以在增加字段的同时也要在onCreate( )方法中修改创建该表的SQL语句,从而增加字段。这样那么不管是升级用户还是新用户,数据库中的该表都增加了该字段。

4、结论

1.数据库的升级是通过修改version值实现的。
2.新用户会通过onCreate()方法产生数据库。对于升级用户而言,如果没有升级数据库,则不会进行数据库创建及升级操作。如果升级了数据库,则会调用onUpgrade( )方法。
3.应用的升级与数据库升级无必然的联系。

5、参考

  1. 网址:http://blog.csdn.net/jiangwei0910410003/article/details/39670813
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中直接显示数据库,可以通过以下步骤实现: 步骤1:创建数据库 首先,创建一个数据库类来管理数据库的创建和操作。在该类中创建一个数据库,包含所需的数据表和字段。 步骤2:创建数据库帮助类 创建一个继承自SQLiteOpenHelper的类,用于创建和管理数据库。在该类中,重写onCreate()方法来创建数据库,重写onUpgrade()方法来升级数据库,以及其他必要的方法。 步骤3:在应用中使用数据库 在应用中使用数据库时,需要实例化数据库类,并调用相应的方法来执行数据库操作,如插入数据、查询数据、更新数据或删除数据。 步骤4:在界面中显示数据库 要在界面中直接显示数据库,可以使用适配器和列表视图来实现。首先,在界面布局文件中添加一个列表视图,然后创建一个适配器类来将数据库查询结果转换为列表项,并为列表视图设置适配器。最后,在界面的适当位置调用适配器的方法来显示数据库中的数据。 步骤5:刷新数据库显示 如果在界面中对数据库进行了增删改操作后,需要及时刷新数据库显示,可以在对数据库进行操作后,调用适配器的notifyDataSetChanged()方法来刷新列表视图。 总结: 以上是在Android中直接显示数据库的基本步骤。通过创建数据库类和数据库帮助类,以及使用适配器和列表视图,可以方便地在界面中显示数据库中的数据,并能够实现对数据库的增删改操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值