• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

单搞定ASA备份/恢复程序

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 8次 | 进入软件测试论坛讨论

领测软件测试网
  Adaptive Server Anywhere(本文中简称ASA) 是PowerBuilder(本文中简称PB)自带的数据库管理系统,可作为小型应用系统的数据库服务器。而数据库的备份/恢复是一项基本的工作,要想用短短几分钟就完成这类程序的编写,能做到吗?本文就将为大家介绍一个用PB编写的ASA备份/恢复程序,只需很短的时间,就可以编制完成并运用在以ASA作为数据环境的小型应用上。

  一 备份程序
  先来看看备份程序部分的写法。在窗体上建一文本框 sle_1,用来显示备份的文件名,并添加两个按钮:cb_1(浏览)、cb_2(备份)。相应的事件代码如下:

  //cb_1.clicked()

  string fname,name

  GetfileSaveName(@#保存@#,fname,name,“db”,@#数据库备份文件(*.1),*.1@#)

  sle_1.text=fname

  //cb_2.clicked()

  string mysql,bfname

  bfname=trim(sle_1.text)

  bfname=left(bfname,len(bfname)-2)

  mysql=“BACKUP DATABASE TO @#”+bfname+“@#”

  execute immediate :Mysql USING SQLCA;//运用SQL语句立刻执行备份

  if sqlca.sqlcode=0 then

  messagebox(“信息提示”,@#备份成功!@#,information!,OK!)//给出备份成功与否的相关信息

  else

  messagebox(“信息提示”,@#备份失败!@#,information!,OK!)

  end if

  二 恢复程序
  再来看看恢复数据库程序的编写。在窗体上建一文本框 sle_1,显示用来恢复的备份文件名,并添加两个按钮:cb_1(查找)、cb_2(恢复)。声明一个修改文件属性的API函数:

  FUNCTION ulong SetFileAttributes(ref string lpFileName,ulong dwFileAttributes) LIBRARY “kernel32.dll” ALIAS FOR “SetFileAttributesA”

  相应的事件代码如下:

  //cb_1.clicked()

  string fname,name

  GetfileOPenName(@#查找@#,fname,name,“1”,“数据库备份文件(*.1),*.1”)

  sle_1.text=fname

  //cb_2.clicked()

  string mysql,bfname,gzname

  ulong sxz=32,kb //sxz为文件的属性值,32表示可读写

  boolean tmp

  bfname=trim(sle_1.text)

  bfname=left(bfname,len(bfname)-2)

  // d: lgz 为示例中数据库文件所在目录,tmp.db为临时的数据库文件

  mysql=“RESTORE DATABASE @#d: lgz\tmp.db@# FROM @#”+bfname+“@#”

  execute immediate :Mysql USING SQLCA;//同样是运用SQL语句来立刻执行恢复数据库的工作

  if sqlca.sqlcode<>0 then

  messagebox(“信息提示”,@#数据恢复失败!@#,information!,OK!)

  return

  end if

  disconnect; //断开数据库连接

  gzname=@#d: lgz\gz.db@# //包含路径的数据库文件

  SetFileAttributes(gzname,sxz) // 去掉只读属性

  tmp=filedelete(@#d: lgz\gz.db@#) //删除恢复前的数据库

  if tmp=false then

  messagebox(“信息提示”,@#备份失败!@#,information!,OK!)

  return

  end if

  //将临时的数据库复制到当前的数据库文件上

  bfname=“d: lgz\tmp.db”

  gzname=“d: lgz\gz.db”

  kb=filecopy(bfname,gzname,true )

  if kb=1 then

  messagebox(“信息提示”,@#数据库恢复成功!@#,information!,OK!)

  else

  messagebox(“信息提示”,@#数据库复制失败!@#,information!,OK!)

  return

  end if

  filedelete(@#d: lgz\tmp.db@#) //删除临时的数据库文件

  connect;

  三 小结
  程序备份和恢复的实现都只是调用了SQL内置的功能来实现,使程序显得相对简洁。功能虽然比较单一和简单,却也能满足数据库的备份和恢复的工作需求,在要求不高的应用场合可为数据库管理人员节约大量精力。上述程序在 PB 9.0中调试通过。
 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网