请教(在线等,急)

superboy06 2004-08-02 12:29:21
请问如何在PB中备份数据库,还原数据库??可以提供这方面的代码吗?谢谢
另外还有在PB中如何实现文件夹考贝,就是说将此文件夹下的所有文件,包含子文件夹下的内容全部考贝?谢谢
...全文
77 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxhacker 2004-08-04
  • 打赏
  • 举报
回复
备份
run(dbshrink -q -y "+ls_path+" "+ls_backupfilename)

还原
run(dbexpand -q -y "+ls_restorefilename+" "+ls_path)
10975037 2004-08-03
  • 打赏
  • 举报
回复
备份

string ls_filename,ls_day,ls_month,ls_year
string ls_pathname,ls_sql
datetime ldt_date

select getdate() into :ldt_date from clb; //取得服务器时间
ls_day = string(day(date(ldt_date)))
ls_month = string(month(date(ldt_date)))
ls_year = string(year(date(ldt_date)))
if len(ls_day) < 2 then
ls_day = '0' + ls_day
end if
if len(ls_month) < 2 then
ls_month = '0' + ls_month
end if
ls_filename = ls_year + ls_month + ls_day
ls_pathname = gl_path + "备份\" //备份目录
CreateDirectory(ls_pathname, 0)
ls_filename = ls_pathname + ls_filename+".bdt"
if fileexists(ls_filename) then
if messagebox("提示","今天已经备份过,是否覆盖今天的备份?",question!,yesno!,1) = 1 then
FileDelete(ls_filename)
ls_sql = "EXEC sp_addumpdevice 'disk', 'backup_clhsxt','"+ls_filename+"'~r~n" + &
"backup database clhsxt to backup_clhsxt~r~n" + &
"exec sp_dropdevice 'backup_clhsxt'"
EXECUTE IMMEDIATE :ls_sql;
if sqlca.sqldbcode = 0 then
messagebox('备份成功','备份的路径和文件:【'+ls_filename+'】')
else
messagebox('备份失败','请通知系统管理员或者重新备份!')
end if
end if
else
ls_sql = "EXEC sp_addumpdevice 'disk', 'backup_clhsxt','"+ls_filename+"'~r~n" + &
"backup database clhsxt to backup_clhsxt~r~n" + &
"exec sp_dropdevice 'backup_clhsxt'"
EXECUTE IMMEDIATE :ls_sql;
if sqlca.sqldbcode = 0 then
messagebox('备份成功','备份的路径和文件:【'+ls_filename+'】')
else
messagebox('备份失败','请通知系统管理员或者重新备份!')
end if
end if
end if


//还原

sqlca.autocommit = true
if messagebox('提示',"还原数据库可能会破坏原有数据~r~n在执行本操作之前请先做好备份!!!~r~n确实要还原数据库吗?",question!, yesno!, 2) = 1 then

string ls_pathname,ls_filename

GetFileOpenName("选择还原文件",ls_pathname,ls_filename,"bdt","bdt文件(*.bdt),*.bdt,所有文件(*.*),*.*")

if ls_pathname = "" or isnull(ls_pathname) then
return
end if

SetPointer(HourGlass!)
string ls_sql
ls_sql = "use master"
EXECUTE IMMEDIATE:ls_sql;
ls_sql = "restore database clhsxt from disk = '" + ls_pathname + "'"
EXECUTE IMMEDIATE:ls_sql;
if sqlca.sqldbcode = 0 then
messagebox('提示','还原完成!')
else
messagebox('提示','还原失败,你可以通过以下方法解决:~r~n1、重新执行本操作~r~n2、通过数据库后台来还原~r~n3、通知系统管理员')
end if
end if
ls_sql = "use clhsxt"
EXECUTE IMMEDIATE:ls_sql;
klbt 2004-08-02
  • 打赏
  • 举报
回复
你的数据库是?
qianfl 2004-08-02
  • 打赏
  • 举报
回复
看什么数据库了,不同数据库方法不同
循环读取文件,再一个个拷贝,读文件可以用listbox的dirlist函数
superboy06 2004-08-02
  • 打赏
  • 举报
回复
用的是SQLSERVER数据库,
文件夹内的文件夹怎么判断?

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧