一种基于PowerBuilder数据库结构升级方法.docVIP

一种基于PowerBuilder数据库结构升级方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于PowerBuilder数据库结构升级方法

一种基于PowerBuilder的数据库结构升级方法   摘要:在使用和维护各种管理信息系统(MIS)软件过程中,随着用户对软件不断提出新的要求,经常需要对程序和数据库进行完善升级。本文介绍了一种简单可行、对用户透明的升级数据库结构的方法。   关键词:数据库;升级;PowerBuilder;MIS      1 引言      在软件的生命周期中,维护阶段占据了相当大的一个比例[1]。随着软件的使用,随着用户对软件的熟悉和业务过程的深入理解,以及用户业务流程发生的新的变化,软件往往需要进行各种维护和升级以满足用户不断发展的需求。在这种维护过程中,数据库结构也需要不断加以升级,如建新表,在表增加新的列,修改原有列的类型,增加新的存储过程等。   在进行数据库结构升级时,受时间和空间的限制,开发人员不可能到用户单位操作可视化的数据库管理工具,而需要写代码来实现数据库结构的修改。这部分数据库升级代码可以单独做成一个程序,让用户运行这个程序来实现数据库的升级。但是,这种方式并不是很理想,因为用这种方式升级数据库结构依赖于用户,如果用户忘记执行或者重复执行了数据库升级程序,可能会造成意想不到的后果。再者,用这种方式升级数据库,用户需要单独执行一个程序,这也增加了用户的工作量。   本文介绍了一种能够自动检测并升级数据库结构的方法。这种方法可以适用于各种数据库系统,可以使用各种编程语言来实现。本文以MS SQL Server数据库和PowerBuilder编程语言为例具体说明其实现过程。      2 实现      本文所介绍的数据库结构升级方法的核心思想是:每个程序根据需要创建一系列的数据库升级补丁,为每个补丁指定相应的用于数据库升级的SQL语句,并分配一个唯一的ID。当程序启动时,逐个运行这些补丁,从而对数据库进行升级,并且把运行升级补丁的情况(如升级日期、升级内容、是否成功等信息)记录到一个特殊的数据库表中,这样一方面能够把这些重要信息记录下来,方便程序员日后查询,别一方面也能够避免升级补丁重复运行。数据库升级流程如图1所示。      2.1 数据库维护日志   数据库结构的每一次升级可以看作是对数据库的一个补丁,这个补丁就是一段SQL语句。为了准确对数据库进行更新,既不能有所遗漏,又避免重复更新,本文设计了一个特殊的数据库表DbUpgradeLog,用来记录数据库更新情况。DbUpgradeLog表的结构见表1。      当应用程序启动时,首先检测是否有尚未执行的或者执行失败的数据库维护脚本,即数据库补丁。如果有,则执行这些脚本,并把执行的情况记录到DbUpgradeLog表中。   2.2创建数据库补丁   根据面向对象的设计思想,本文设计了一个类n_db_upgarde_attr来封装数据库升级的补丁。这个类有三个公共的实例变量,如下面的代码所示。   public int ii_updateid=0//数据库升级(补丁)的唯一id   public string is_statement //用于此次升级的SQL语句   public string is_description//对此次升级的描述   另外,还有一个类n_db_packs用来创建这些补丁。这个类是一个抽象类,有一个of_build_packs方法,此方法返回一个int类型的值,指示所创建补丁的个数。另外,此方法以引用方式接受一个n_db_upgrade_attr类型的数组参数,用以保存实际生成的补丁。用户可以在从其派生自己的类,完成实际的数据库补丁创建功能,如下代码所示。   n_db_upgrade_attr obj//数据库升级补丁对象   obj=create n_db_upgrade_attr//这是第一个数据库补丁   obj.ii_updateid=1//为其设置一个唯一的升级id   //设置数据库升级脚本   obj.is_statement=alter table article alter column 位次 varchar(20) null;   + alter table article alter column 级别 varchar(20) null;   obj.is_description=论文表位次、级别字段增加宽度//添加描述   packs[1]=obj//把数据库补丁保存到补丁数组中   obj=create n_db_upgrade_attr//创建第2个数据库补丁   ...//这里省略了创建其他补丁的代码   return upperbound(packs) //返回补丁数量   2.3 程序运行   当程序启动时,首先检测数据库升

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档