摘要:目的:探討PowerBuilder實現(xiàn)Sybase數(shù)據(jù)庫備份及恢復(fù)。方法:利用PowerBuilder,進(jìn)行窗口設(shè)計實現(xiàn)數(shù)據(jù)庫備份和恢復(fù)。結(jié)果:在PowerBuilder6開發(fā)環(huán)境下,在數(shù)據(jù)庫應(yīng)用程序中實現(xiàn)SYBASE數(shù)據(jù)備份、恢復(fù)的具體解決方案。討論:PowerBuilder根據(jù)數(shù)據(jù)庫的返回信息自動判斷備份恢復(fù)成功與否的方法,并能在數(shù)據(jù)備份恢復(fù)完成時友情提示,效果令人滿意。
關(guān)鍵詞:Sybase數(shù)據(jù)庫;數(shù)據(jù)庫備份;數(shù)據(jù)庫恢復(fù)
中圖分類號:TP311.13 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 20-0000-02
1 前言
隨著醫(yī)療信息管理水平的提高,大中型數(shù)據(jù)庫產(chǎn)品在醫(yī)療衛(wèi)生行業(yè)的使用越來越普及,其中Sybase是使用較為廣泛的一種。在數(shù)據(jù)庫的使用中,數(shù)據(jù)的備份和恢復(fù)是系統(tǒng)管理員所要負(fù)責(zé)的一項主要工作,它對于保證業(yè)務(wù)系統(tǒng)的安全起著重要的作用。
在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)備份是一種最為常用也極其重要的功能。在數(shù)據(jù)庫DBMS環(huán)境下,我們可以直接調(diào)用數(shù)據(jù)庫本身提供的圖形化或命令行式的備份命令進(jìn)行備份,而在PB中卻只能使用Run ( string { windowstate } )的格式調(diào)用DOS下的命令,而這種方法的一個重要弊端就是數(shù)據(jù)庫備份的成功與否,只能在DOS窗口中以數(shù)據(jù)庫系統(tǒng)的自身返回信息顯示,一般情況下為英文字符,這樣既與應(yīng)用程序的中文界面不協(xié)調(diào),也增加了對使用人員的要求,顯得不夠?qū)I(yè)。
下面在PowerBuilder6環(huán)境下,就實現(xiàn)Sybase數(shù)據(jù)庫自動備份恢復(fù)做一詳細(xì)介紹。
2 Sybase數(shù)據(jù)庫備份實現(xiàn)方法(見圖1)
圖1
窗口控件:tab_1(tabpage_1數(shù)據(jù)備份、tabpage_2數(shù)據(jù)恢復(fù))、rb_1(系統(tǒng)默認(rèn)路徑)、rb_2(其他備份路徑)、sle_1、sle_2、cb_1(開始備份)、cb_2(關(guān)閉窗口)
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=1
end if
tab_1.tabpage_2.sle_3.text=bak
tab_1.tabpage_2.lb_1.dirlist(bak+\"*.bak\",0)
if message.stringparm=\"1\" then
visible=1
end if
if gx=true then
tab_1.tabpage_1.cb_1.enabled=1
tab_1.tabpage_2.cb_3.enabled=1
tab_1.tabpage_2.cb_dqlb.enabled=1
end if
return
其中,bak、hf、gx為全局變量:string bak=\"c:bak\\"; boolean hf = 1; boolean gx = 1;
2.2 “開始備份”控件clicked事件中代碼
string wj1,wj2
boolean fh = 1
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?。?/p>
fh = copyfilea(gs_datadb,wj1,1)
disconnect using sqlca;
if fh =1 then
messagebox(\"提示信息\",\"數(shù)據(jù)備份失敗,請重新進(jìn)行備份!\")
connect using sqlca;
return
end if
connect using sqlca;
setfileattributesa(wj1,32)
messagebox(\"提示信息\",\"數(shù)據(jù)備份完成!\")
if parent.rb_1.checked then
tab_1.tabpage_2.lb_1.dirlist(bak + \"*.bak\",0)
end if
setpointer(arrow?。?/p>
return
3 Sybase數(shù)據(jù)庫恢復(fù)實現(xiàn)方法(見圖2)
圖2
窗口控件介紹:rb_1_hf(系統(tǒng)默認(rèn)路徑)、rb_2_hf(其它備份路徑)、sle_3、lb_1(列表)、cb_3(開始恢復(fù))、cb_4(關(guān)閉窗口)
3.1 “系統(tǒng)默認(rèn)路徑” 控件clicked事件中代碼
parent.sle_3.text=bak
parent.sle_3.enabled=1
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 “開始恢復(fù)” 控件clicked事件中代碼
string wj1
boolean fh = 1
setpointer(hourglass?。?/p>
disconnect using sqlca;
wj1 = trim(parent.sle_3.text) + parent.lb_1.selecteditem()
if not fileexists(wj1) then
messagebox(\"提示信息\",\"備份文件不存在,請重新選擇備份文件進(jìn)行恢復(fù)!\")
connect using sqlca;
return
end if
setfileattributesa(gs_datadb,32)
fh = copyfilea(wj1,gs_datadb,1)
disconnect using sqlca;
if fh = 1 then
messagebox(\"提示信息\",\"數(shù)據(jù)恢復(fù)失敗,請重新選擇備份文件恢復(fù)!\")
else
messagebox(\"提示信息\",\"數(shù)據(jù)恢復(fù)完成!\")
end if
setfileattributesa(gs_datadb,32)
connect using sqlca;
setpointer(arrow?。?/p>
return
4 討論
上述方法在PowerBuilder6環(huán)境下調(diào)試通過,是根據(jù)數(shù)據(jù)庫的返回信息自動判斷備份恢復(fù)成功與否的方法,并能在數(shù)據(jù)備份恢復(fù)完成時友情提示,效果令人滿意。此方法在其他開發(fā)工具或數(shù)據(jù)庫系統(tǒng)中也可采用,代碼的改動量不大,具有一定的實用價值。
5 參考文獻(xiàn)
[1]何軍,劉紅巖主編.PowerBuilder6.0原理與應(yīng)用開發(fā)指南[M].清華大學(xué)出版社,1997,5(1).
[2]張長富,李勻等編著.Power Builder 6.0 開發(fā)人員指南,北京希望電腦公司,1998,10.
[3]張長富,李勻,嚴(yán)蘇婭編著.希望圖書創(chuàng)作室審校,PowerBuilder6.0用戶參考手冊,1998,10(1).