单搞定ASA备份/恢复程序 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 单搞定ASA备份/恢复程序 (http://www.webasp.net/article/21/20888.htm) |
| -- 作者:未知 -- 发布日期: 2005-04-29 |
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中调试通过。 |
| webasp.net |