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

转载 2012年04月05日 16:19:08

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

(加入日期:2002-5-25)

保存文章至硬盘】【打印文章】【字体:

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

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

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

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

1、在“备份”图标按钮的Click事件中加入以下代码
if fileexists("c:\jybak.log") then
filedelete("c:\jybak.log")
end if
Run("exp73 userid=scnmis/scnmis@jydb file=c:\jybak.dmp full=y log=c:\jybak.log",Minimized!);
st_message.text='正在备份,请耐心等待。'
back_up = True
其中,back_up为全局变量,定义为:boolean back_up = false。
2、在窗口的Timer事件中加入以下代码
long file_handle
string read_line
If back_up Then
st_message.text='正在备份,请耐心等待。'
If L_quit Then
SetPointer(Hourglass!)
End If
file_handle = fileopen( 'c:\jybak.log',LineMode!)
do while fileread(file_handle,read_line) > -1
loop
If file_handle > 0 Then
fileclose(file_handle)
SetPointer( Arrow! )
if Left(read_line,30) <> "Export terminated successfully" then
st_message.text='数据备份失败!'
Messagebox("警告:", "数据备份失败!")
else
st_message.text='数据备份成功!'
Messagebox("恭喜!", "数据备份成功!")
end if
g_bfbz = True
back_up = False
If L_quit Then
close(w_main)
Exit_Windows( 5,0 )
End If
End If
End If
其中,Exit_Windows为Global External Function,定义为:FUNCTION long ExitWindowsEx(long a,long b) LIBRARY "user32.dll"。
3、至此,监控的数据备份的目的基本已经达到。为了实现在备份没有完成的情况下禁止退出,在“退出”图标按钮的Click事件中加入以下代码
long file_handle ,i
string read_line
long rc,allow
rc = MessageBox( "请您选择:", "是否退出系统?", Question!, YesNo! )
if rc = 1 then
If g_bfbz = False then
If back_up Then
MessageBox( "提示信息:","备份正在进行,完成后才能退出。按确定继续备份")
Goto Lab0
Else
allow = Messagebox("提示信息","退出前应当备份,现在开始吗?", Question!, YesNo!)
L_quit =true
If allow=1 Then
Triggerevent(Cb_backup,Clicked!)
Else
close(w_main)
ExitWindowsEx( 5,0 )
End If
End If
Else
close(w_main)
ExitWindowsEx( 5,0 )
End if
End if


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

PB dw 冻结数据窗口列

冻结数据窗口列 2013-05-20 23:12:19 分类: 数据库开发技术 1. string ls_colx // Get x location of emp_fname co...
  • anyqu
  • anyqu
  • 2014年09月26日 20:09
  • 2101

如何自己做Zabbix数据导出功能(上)

Zabbix是一款开源的监控工具,使用广泛。然而,它竟然不支持将监控数据导出。为此,本文尝试分析一下,应该如何去做Zabbix的数据导出功能。...
  • nirendao
  • nirendao
  • 2017年03月16日 20:08
  • 2187

PB使用数据管道实现数据的自动迁移和备份

使用数据管道实现数据的自动迁移和备份 摘要:针对MIS系统的开发和使用过程中数据的备份和迁移问题,提出了解决问题的基本思路和方案,详细阐述了方案实施过程中涉及的方法和技巧,并对使用PowerBuil...
  • linybo
  • linybo
  • 2014年04月13日 22:38
  • 1641

在PB中如何对ASA进行数据备份

在PB中如何对ASA进行数据备份 2010-05-09 22:09:47 分类: Linux在PB中如何对ASA进行数据备份 一、完全备份和增量备份  “完全备份”对数据库文件和事务日志都进行备份。”...
  • tlammon
  • tlammon
  • 2015年06月27日 02:19
  • 293

PB中数据窗口“Update Properties”的设置

Row changed between retrieve and update. No changes made to database. DELETE FROM "zbfxb" WHER...
  • tlammon
  • tlammon
  • 2015年01月15日 18:31
  • 1841

PB,PowerBuilder---合并相同单元格,相同的只显示一行

PB,合并行,sparse
  • luoxiya521
  • luoxiya521
  • 2015年01月14日 14:30
  • 1505

PB数据窗口难得一见的技巧

PB基础知识 1、Datawindow object(数据窗口库对象)    数据源决定了数据窗口对象获取数据的方式。PowerBuild支持五种数据源: A、 快速选择(Quik Sele...
  • tlammon
  • tlammon
  • 2016年03月22日 10:36
  • 2903

如何在PB中制作特殊形状数据窗口或按钮介绍

在 CSDN 上,经常有朋友问到不规则窗口或者不规则的按钮如何制作,在这里我介绍 几个比较常用的 API 函数,来实现不规则窗口或者不规则按钮的制作。 一、先看一下效果: 点击一下圆形花边按钮,...
  • lzp_lrp
  • lzp_lrp
  • 2015年05月12日 13:16
  • 2597

pb中数据窗口函数小结(转)

pb中数据窗口函数小结(转) 一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法...
  • tlammon
  • tlammon
  • 2016年03月19日 17:25
  • 902

PB动态数据管道技术实用编程

一、引言 使用过PowerBuilder(以下简称PB)的编程人员都知道,PB允许用户在程序运行过程中应用数据窗口方法或属性表达式查看或修改数据窗口对象的属性,还可以动态的创建数据窗口对象,并将这种...
  • linybo
  • linybo
  • 2014年04月13日 22:36
  • 1575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB中实现可监控的数据备份
举报原因:
原因补充:

(最多只允许输入30个字)