分享
 
 
 

单搞定ASA备份/恢复程序

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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:\slgz 为示例中数据库文件所在目录,tmp.db为临时的数据库文件

mysql=“RESTORE DATABASE 'd:\slgz\tmp.db' FROM '”+bfname+“'”

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

if sqlca.sqlcode<>0 then

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

return

end if

disconnect; //断开数据库连接

gzname='d:\slgz\gz.db' //包含路径的数据库文件

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

tmp=filedelete('d:\slgz\gz.db') //删除恢复前的数据库

if tmp=false then

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

return

end if

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

bfname=“d:\slgz\tmp.db”

gzname=“d:\slgz\gz.db”

kb=filecopy(bfname,gzname,true )

if kb=1 then

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

else

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

return

end if

filedelete('d:\slgz\tmp.db') //删除临时的数据库文件

connect;

三 小结

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有