时间:2022-09-24 01:04:45
摘要:目的:探讨PowerBuilder实现Sybase数据库备份及恢复。方法:利用PowerBuilder,进行窗口设计实现数据库备份和恢复。结果:在PowerBuilder6开发环境下,在数据库应用程序中实现SYBASE数据备份、恢复的具体解决方案。讨论:PowerBuilder根据数据库的返回信息自动判断备份恢复成功与否的方法,并能在数据备份恢复完成时友情提示,效果令人满意。
关键词:Sybase数据库;数据库备份;数据库恢复
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2012) 20-0000-02
1 前言
随着医疗信息管理水平的提高,大中型数据库产品在医疗卫生行业的使用越来越普及,其中Sybase是使用较为广泛的一种。在数据库的使用中,数据的备份和恢复是系统管理员所要负责的一项主要工作,它对于保证业务系统的安全起着重要的作用。
在数据库系统中,数据备份是一种最为常用也极其重要的功能。在数据库DBMS环境下,我们可以直接调用数据库本身提供的图形化或命令行式的备份命令进行备份,而在pb中却只能使用Run ( string { windowstate } )的格式调用DOS下的命令,而这种方法的一个重要弊端就是数据库备份的成功与否,只能在DOS窗口中以数据库系统的自身返回信息显示,一般情况下为英文字符,这样既与应用程序的中文界面不协调,也增加了对使用人员的要求,显得不够专业。
下面在PowerBuilder6环境下,就实现sybase数据库自动备份恢复做一详细介绍。
2 Sybase数据库备份实现方法(见图1)
图1
窗口控件:tab_1(tabpage_1数据备份、tabpage_2数据恢复)、rb_1(系统默认路径)、rb_2(其他备份路径)、sle_1、sle_2、cb_1(开始备份)、cb_2(关闭窗口)
2.1 窗口open事件中代码
integer l1,l2
string get, jt
jt=string(today(),"yymmdd")
tab_1.tabpage_1.sle_1.text=bak+jt+".bak"
if hf=true then
tab_1.movetab(1,0)
hf=false
end if
tab_1.tabpage_2.sle_3.text=bak
tab_1.tabpage_2.lb_1.dirlist(bak+"*.bak",0)
if message.stringparm="false" then
visible=false
end if
if gx=true then
tab_1.tabpage_1.cb_1.enabled=false
tab_1.tabpage_2.cb_3.enabled=false
tab_1.tabpage_2.cb_dqlb.enabled=false
end if
return
其中,bak、hf、gx为全局变量:string bak="c:bak\"; boolean hf = false; boolean gx = false;
2.2 “开始备份”控件clicked事件中代码
string wj1,wj2
boolean fh = false
integer l1
disconnect using sqlca;
if parent.rb_1.checked then
wj1 = parent.sle_1.text
wj2 = jt
else
wj1 = parent.sle_2.text
end if
if fileexists(wj1) then
messagebox("提示信息","备份文件已存在,请重新输入文件名!")
connect using sqlca;
return
end if
setpointer(hourglass!)
fh = copyfilea(gs_datadb,wj1,false)
disconnect using sqlca;
if fh =false then
messagebox("提示信息","数据备份失败,请重新进行备份!")
connect using sqlca;
return
end if
connect using sqlca;
setfileattributesa(wj1,32)
messagebox("提示信息","数据备份完成!")
if parent.rb_1.checked then
tab_1.tabpage_2.lb_1.dirlist(bak + "*.bak",0)
end if
setpointer(arrow!)
return
3 Sybase数据库恢复实现方法(见图2)
图2
窗口控件介绍:rb_1_hf(系统默认路径)、rb_2_hf(其它备份路径)、sle_3、lb_1(列表)、cb_3(开始恢复)、cb_4(关闭窗口)
3.1 “系统默认路径” 控件clicked事件中代码
parent.sle_3.text=bak
parent.sle_3.enabled=false
return
3.2 “其他备份路径” 控件clicked事件中代码
parent.sle_3.enabled=true
return
3.3 “列表” 控件modified事件中代码
string ls_bak
ls_bak=trim(text)
tab_1.tabpage_2.lb_1.dirlist(ls_bak+"*.bak",0)
return
3.4 “开始恢复” 控件clicked事件中代码
string wj1
boolean fh = false
setpointer(hourglass!)
disconnect using sqlca;
wj1 = trim(parent.sle_3.text) + parent.lb_1.selecteditem()
if not fileexists(wj1) then
messagebox("提示信息","备份文件不存在,请重新选择备份文件进行恢复!")
connect using sqlca;
return
end if
setfileattributesa(gs_datadb,32)
fh = copyfilea(wj1,gs_datadb,false)
disconnect using sqlca;
if fh = false then
messagebox("提示信息","数据恢复失败,请重新选择备份文件恢复!")
else
messagebox("提示信息","数据恢复完成!")
end if
setfileattributesa(gs_datadb,32)
connect using sqlca;
setpointer(arrow!)
return
4 讨论
上述方法在PowerBuilder6环境下调试通过,是根据数据库的返回信息自动判断备份恢复成功与否的方法,并能在数据备份恢复完成时友情提示,效果令人满意。此方法在其他开发工具或数据库系统中也可采用,代码的改动量不大,具有一定的实用价值。
5 参考文献
[1]何军,刘红岩主编.PowerBuilder6.0原理与应用开发指南[M].清华大学出版社,1997,5(1).
[2]张长富,李匀等编著.Power Builder 6.0 开发人员指南,北京希望电脑公司,1998,10.
[3]张长富,李匀,严苏娅编著.希望图书创作室审校,PowerBuilder6.0用户参考手册,1998,10(1).