数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

PB中实现可监控的数据备份


发布日期:2019年02月14日
 
PB中实现可监控的数据备份

在众多的数据库应用开发平台中PowerBuilder作为一个强大的图形Client/Server数据库应用程序开发工具而得到广泛使用本文将向读者详细介绍在PB开发的数据库应用程序中实现可监控数据备份的具体解决方案

PowerBuilder是当今数据库应用程序中常用的开发工具之一开发者能用它来建立用户容易使用的各种数据库应用程序PB内部定义的函数种类繁多并允许开发者修改其数据库当然PB的部分功能也存在着不足

在数据库系统中数据备份是一种最为常用也极其重要的功能在数据库DBMS环境下我们可以直接调用数据库本身提供的图形化或命令行式的备份命令进行备份而在PB中却只能使用Run ( string { windowstate } )的格式调用DOS下的命令而这种方法的一个重要弊端就是数据库备份的成功与否只能在DOS窗口中以数据库系统的自身返回信息显示一般情况下为英文字符这样既与应用程序的中文界面不协调也增加了对使用人员的要求显得不够专业

在实践中笔者发现一种根据数据库的返回信息自动判断备份成功与否的方法并能在数据备份没有完成时拒绝退出效果令人满意下面在PowerBuilder Oracle Windows x环境下就这一方法的实现做一介绍

备份图标按钮的Click事件中加入以下代码

if fileexists(c:\jybaklog) then

filedelete(c:\jybaklog)

end if

Run(exp userid=scnmis/scnmis@jydb file=c:\jybakdmp full=y log=c:\jybaklogMinimized!);

st_messagetext=正在备份请耐心等待

back_up = True

其中back_up为全局变量定义为boolean back_up = false

在窗口的Timer事件中加入以下代码

long file_handle

string read_line

If back_up Then

st_messagetext=正在备份请耐心等待

If L_quit Then

SetPointer(Hourglass!)

End If

file_handle = fileopen( c:\jybaklogLineMode!)

do while fileread(file_handleread_line) >

loop

If file_handle > Then

fileclose(file_handle)

SetPointer( Arrow! )

if Left(read_line) <> Export terminated successfully then

st_messagetext=数据备份失败!

Messagebox(警告: 数据备份失败!)

else

st_messagetext=数据备份成功!

Messagebox(恭喜! 数据备份成功!)

end if

g_bfbz = True

back_up = False

If L_quit Then

close(w_main)

Exit_Windows( )

End If

End If

End If

其中Exit_Windows为Global External Function定义为FUNCTION long ExitWindowsEx(long along b) LIBRARY userdll

至此监控的数据备份的目的基本已经达到为了实现在备份没有完成的情况下禁止退出退出图标按钮的Click事件中加入以下代码

long file_handle i

string read_line

long rcallow

rc = MessageBox( 请您选择: 是否退出系统? Question! YesNo! )

if rc = then

If g_bfbz = False then

If back_up Then

MessageBox( 提示信息:备份正在进行完成后才能退出按确定继续备份)

Goto Lab

Else

allow = Messagebox(提示信息退出前应当备份现在开始吗? Question! YesNo!)

L_quit =true

If allow= Then

Triggerevent(Cb_backupClicked!)

Else

close(w_main)

ExitWindowsEx( )

End If

End If

Else

close(w_main)

ExitWindowsEx( )

End if

End if

以上方法在PowerBuilder Oracle 环境下调试通过但在其他开发工具或数据库系统中也可使用这种方法代码的改动量不大具有一定的实用价值

上一篇:在PB中实现分段打印功能

下一篇:在PB中用Flash制作Splash封面