中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 网吧之家 桌面壁纸 科技商情  

PB中实现可监控的数据备份
顾勇  2001-05-29 09:32:59

  
  在众多的数据库应用开发平台中,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环境下调试通过,但在其他开发工具或数据库系统中也可使用这种方法,代码的改动量不大,具有一定的实用价值。

赛迪网



相关报道
 
更多本栏目内容
??Windows 2000系统安全设置攻略
??Dreamweaver编写CSS需要掌握的技巧
??使用Flash MX过程中的3个小技巧
??拖IE9网站图标到Win7任务栏 精彩好礼任你拿
??从此不再耗流量?Google离线地图试用
??给瑞星添加移动存储自动杀毒功能
??一周壁纸榜单 靓丽风景伴您欢度周末
??金山网络七款软件齐升级 炫丽界面贺新春
??提升网站流量和权重 百度热榜排第一
预警:电商促销引钓鱼 七夕网购需谨慎

本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱