备份|程序|恢复
牐燗daptive Server Anywhere(本文中简称ASA) 是PowerBuilder(本文中简称PB)自带的数据库管理系统,可作为小型应用系统的数据库服务器,
单搞定ASA备份/恢复程序数据库教程
。而数据库的备份/恢复是一项基本的工作,要想用短短几分钟就完成这类程序的编写,能做到吗?本文就将为大家介绍一个用PB编写的ASA备份/恢复程序,只需很短的时间,就可以编制完成并运用在以ASA作为数据环境的小型应用上。牐犚 备份程序
牐犗壤纯纯幢阜莩绦虿糠值男捶āT诖疤迳辖ㄒ晃谋究 sle_1,用来显示备份的文件名,并添加两个按钮:cb_1(浏览)、cb_2(备份)。相应的事件代码如下:
牐//cb_1.clicked()
牐爏tring fname,name
牐燝etfileSaveName('保存',fname,name,“db”,'数据库备份文件(*.1),*.1')
牐爏le_1.text=fname
牐//cb_2.clicked()
牐爏tring mysql,bfname
牐燽fname=trim(sle_1.text)
牐燽fname=left(bfname,len(bfname)-2)
牐爉ysql=“BACKUP DATABASE TO '”+bfname+“'”
牐爀xecute immediate :Mysql USING SQLCA;//运用SQL语句立刻执行备份
牐爄f sqlca.sqlcode=0 then
牐爉essagebox(“信息提示”,'备份成功!',information!,OK!)//给出备份成功与否的相关信息
牐爀lse
牐爉essagebox(“信息提示”,'备份失败!',information!,OK!)
牐爀nd if
牐牰 恢复程序
牐犜倮纯纯椿指词据库程序的编写。在窗体上建一文本框 sle_1,显示用来恢复的备份文件名,并添加两个按钮:cb_1(查找)、cb_2(恢复)。声明一个修改文件属性的API函数:
牐燜UNCTION ulong SetFileAttributes(ref string lpFileName,ulong dwFileAttributes) LIBRARY “kernel32.dll” ALIAS FOR “SetFileAttributesA”
牐犗嘤Φ氖录代码如下:
牐//cb_1.clicked()
牐爏tring fname,name
牐燝etfileOPenName('查找',fname,name,“1”,“数据库备份文件(*.1),*.1”)
牐爏le_1.text=fname
牐//cb_2.clicked()
牐爏tring mysql,bfname,gzname
牐爑long sxz=32,kb //sxz为文件的属性值,32表示可读写
牐燽oolean tmp
牐燽fname=trim(sle_1.text)
牐燽fname=left(bfname,len(bfname)-2)
牐// d: lgz 为示例中数据库文件所在目录,tmp.db为临时的数据库文件
牐爉ysql=“RESTORE DATABASE 'd: lgz\tmp.db' FROM '”+bfname+“'”
牐爀xecute immediate :Mysql USING SQLCA;//同样是运用SQL语句来立刻执行恢复数据库的工作
牐爄f sqlca.sqlcode<>0 then
牐爉essagebox(“信息提示”,'数据恢复失败!',information!,OK!)
牐爎eturn
牐爀nd if
牐燿isconnect; //断开数据库连接
牐爂zname='d: lgz\gz.db' //包含路径的数据库文件
牐燬etFileAttributes(gzname,sxz) // 去掉只读属性
牐爐mp=filedelete('d: lgz\gz.db') //删除恢复前的数据库
牐爄f tmp=false then
牐爉essagebox(“信息提示”,'备份失败!',information!,OK!)
牐爎eturn
牐爀nd if
牐//将临时的数据库复制到当前的数据库文件上
牐燽fname=“d: lgz\tmp.db”
牐爂zname=“d: lgz\gz.db”
牐爇b=filecopy(bfname,gzname,true )
牐爄f kb=1 then
牐爉essagebox(“信息提示”,'数据库恢复成功!',information!,OK!)
牐爀lse
牐爉essagebox(“信息提示”,'数据库复制失败!',information!,OK!)
牐爎eturn
牐爀nd if
牐爁iledelete('d: lgz\tmp.db') //删除临时的数据库文件
牐燾onnect;
牐犎 小结
牐牫绦虮阜莺突指吹氖迪侄贾皇堑饔昧薙QL内置的功能来实现,使程序显得相对简洁,