单机软件软件升级时的数据库升级方案
2011-09-05 12:55
288 查看
在单机软件中,如一些小型的管理软件,在发布一个版本之后,后期如果需要对软件进行升级但数据库同时也需要升级,则可以采取下面升级方案(方案不是最好的,如果有更好的欢迎指教),该解决方案可以满足需要递归升级的情况:
数据库升级必须保证只升级一遍同时把所有需要修改的字段等修改,如果发布了多个版本,则又需要进行递归升级,因而就需要记录下当前数据库升级到的版本号,如:DBVERSION = 1,此时从数据库中读取到数据库的版本号,与软件中的最新数据库版本号进行比对,如果小于当前的则需要进行升级,升级完成把数据库中记录的版本号更新为最新的版本号,因此下次再启动时发现数据库版本号和软件中记录的版本号相同则不再进行升级操作。
数据库升级必须保证只升级一遍同时把所有需要修改的字段等修改,如果发布了多个版本,则又需要进行递归升级,因而就需要记录下当前数据库升级到的版本号,如:DBVERSION = 1,此时从数据库中读取到数据库的版本号,与软件中的最新数据库版本号进行比对,如果小于当前的则需要进行升级,升级完成把数据库中记录的版本号更新为最新的版本号,因此下次再启动时发现数据库版本号和软件中记录的版本号相同则不再进行升级操作。
const DBVERSION = 1; procedure TFmMain.UpgradeDB; var sUpdate:string; iDBVersion: integer; bUpgradeSuccess: boolean; begin //G_Config.iDBVersion为读取到的数据库中保存的数据库版本号,默认为0 if G_Config.iDBVersion>=DBVERSION then //如果数据库中记录的版本号大于等于软件版本号则直接退出 exit; bUpgradeSuccess := true; for iDBVersion := (G_Config.iDBVersion+1) to DBVERSION do begin case iDBVersion of 1: //rtCustomer表中sTel、sTel1、sTel2、sTel3、sTel4默认值修改为'' begin sUpdate := 'alter table rtCustomer alter column sTel TEXT(20) default ""'; bUpgradeSuccess := DMMain.ExecCmd(sUpdate); //执行更新的SQL语句 if bUpgradeSuccess=false then break; //如果执行错误则退出升级 sUpdate := 'alter table rtCustomer alter column sTel1 TEXT(20) default ""'; bUpgradeSuccess := DMMain.ExecCmd(sUpdate); if bUpgradeSuccess=false then break; end; end; end; if bUpgradeSuccess then //更新成功 begin G_Config.iDBVersion := DBVERSION; //把最新的数据库版本号写入到数据库中保存 end //更新失败 else begin if iDBVersion>DBVERSION then iDBVersion := DBVERSION; if G_Config.iDBVersion<iDBVersion-1 then begin G_Config.iDBVersion := iDBVersion-1; //把最新的数据库版本号写入到数据库中保存 end; end; end;
相关文章推荐
- [升级] 数据库升级到11g的应急方案
- Android ormlite升级数据库方案-KJFrameForAndroid升级Sqllite数据库
- 软件在线升级设计方案及演变过程分析
- Android数据库无缝升级方案
- ISCSI+单机同步软件构成局域网数据备份方案
- [升级] 数据库升级到11g的应急方案
- 软件在线升级设计方案及演变过程分析
- CentOS 7.1静默安装11.2.0.3 64位单机数据库软件
- xUtils框架DBUtils数据库版本升级方案
- CentOS 7.1静默安装11.2.0.3 64位单机数据库软件
- Atitit.升级软件的稳定性---基于数据库实现持久化 循环队列 循环队列
- Android 数据库升级方案总结
- EPON ONU软件升级的若干优化方案
- 【数据库】SQL server 评估期已过。有关如何升级的测试版软件的信息,请访问..
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
- CS架构客户端软件升级方案
- 软件开发阶段数据库升级维护策略
- Android数据库升级最佳方案
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
- 客户端程序自动升级服务器端数据库方案