首页 > 开发 > 综合 > 正文

单搞定ASA备份/恢复程序

2024-07-21 02:05:46
字体:
来源:转载
供稿:网友

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中调试通过。
 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表