当前位置: 代码迷 >> PB >> 怎么在程序中备份sql anywhere数据库和access数据库
  详细解决方案

怎么在程序中备份sql anywhere数据库和access数据库

热度:111   发布时间:2016-04-29 09:44:25.0
如何在程序中备份sql anywhere数据库和access数据库
想在程序中实现数据库的备份和恢复,如何实现

------解决方案--------------------

简单搞定ASA备份/恢复程序 

  Adaptive Server Anywhere(本文中简称ASA) 是PowerBuilder(本文中简称 

PB)自带的数据库管理系统,可作为小型应用系统的数据库服务器。而数据库的 

备份/恢复是一项基本的工作,要想用短短几分钟就完成这类程序的编写,能做 

到吗?本文就将为大家介绍一个用PB编写的ASA备份/恢复程序,只需很短的时间 

,就可以编制完成并运用在以ASA作为数据环境的小型应用上。 

  一 备份程序 
  先来看看备份程序部分的写法。在窗体上建一文本框 sle_1,用来显示备份 

的文件名,并添加两个按钮:cb_1(浏览)、cb_2(备份)。相应的事件代码如下: 

  //cb_1.clicked() 

  string fname,name 

  GetfileSaveName('保存',fname,name,“db”,'数据库备份文件 

(*.1),*.1') 

  sle_1.text=fname 

  //cb_2.clicked() 

  string mysql,bfname 

  bfname=trim(sle_1.text) 

  bfname=left(bfname,len(bfname)-2) 

  mysql=“BACKUP DATABASE TO '”+bfname+“'” 

  execute immediate :Mysql USING SQLCA;//运用SQL语句立刻执行备份 

  if sqlca.sqlcode=0 then 

  messagebox(“信息提示”,'备份成功!',information!,OK!)//给出备份 

成功与否的相关信息 

  else 

  messagebox(“信息提示”,'备份失败!',information!,OK!) 

  end if 

  二 恢复程序 
  再来看看恢复数据库程序的编写。在窗体上建一文本框 sle_1,显示用来恢 

复的备份文件名,并添加两个按钮:cb_1(查找)、cb_2(恢复)。声明一个修改文 

件属性的API函数: 

  FUNCTION ulong SetFileAttributes(ref string lpFileName,ulong 

dwFileAttributes) LIBRARY “kernel32.dll” ALIAS FOR 

“SetFileAttributesA” 

  相应的事件代码如下: 

  //cb_1.clicked() 

  string fname,name 

  GetfileOPenName('查找',fname,name,“1”,“数据库备份文件(*.1),*.1 

”) 

  sle_1.text=fname 

  //cb_2.clicked() 

  string mysql,bfname,gzname 

  ulong sxz=32,kb //sxz为文件的属性值,32表示可读写 

  boolean tmp 

  bfname=trim(sle_1.text) 

  bfname=left(bfname,len(bfname)-2) 

  // d:\slgz 为示例中数据库文件所在目录,tmp.db为临时的数据库文件 

  mysql=“RESTORE DATABASE 'd:\slgz\tmp.db' FROM '”+bfname+“'” 

  execute immediate :Mysql USING SQLCA;//同样是运用SQL语句来立刻执行 

恢复数据库的工作 

  if sqlca.sqlcode<>0 then 

  messagebox(“信息提示”,'数据恢复失败!',information!,OK!) 

  return 

  end if 

  disconnect; //断开数据库连接 

  gzname='d:\slgz\gz.db' //包含路径的数据库文件 

  SetFileAttributes(gzname,sxz) // 去掉只读属性 

  tmp=filedelete('d:\slgz\gz.db') //删除恢复前的数据库 

  if tmp=false then 

  messagebox(“信息提示”,'备份失败!',information!,OK!) 

  return 

  end if 

  //将临时的数据库复制到当前的数据库文件上 

  bfname=“d:\slgz\tmp.db” 

  gzname=“d:\slgz\gz.db” 

  kb=filecopy(bfname,gzname,true ) 

  if kb=1 then 

  messagebox(“信息提示”,'数据库恢复成功!',information!,OK!) 

  else 

  messagebox(“信息提示”,'数据库复制失败!',information!,OK!) 

  return 

  end if 

  filedelete('d:\slgz\tmp.db') //删除临时的数据库文件 

  connect; 
  相关解决方案