多种数据DELPHI备份方式(源码)
Access:
//数据备份(创建一个新的备份文件)。
procedure TMainForm.BitBtn1Click(Sender: TObject);
var
F:TShFileOpStruct;
DataBackupFileName:string;
begin
if MessageDlg('备份数据库将创建一个新的Access数据备份文件。'+#13+#10+
''+#13+#10+
'你确定要备份数据库吗?',mtConfirmation,
[mbyes,mbno], 0) = mrno then Exit;
F.wnd:=Handle;
F.wFunc:=Fo_COPY; //操作方式:拷贝数据
F.pFrom:=pAnsichar(ExtractFileDir(Application.ExeName)+'\Data\FB.mdb'+#0);
OpenDialog1.Filter:='Access文件(*.mdb) ¦*.mdb';
OpenDialog1.Title:='选择备份路径和文件名';
OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName)+'\Backup';
if OpenDialog1.Execute then
F.pTo:=pAnsichar(OpenDialog1.FileName+'[Access备份'+//构造备份文件名
FormatDateTime('yyyy-mm-dd',Now)+']'+'.mdb');//进行文件备份
F.fFlags:=FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;//操作选项
if ShFileOperation(F)=0 then
MessageDlg(#13+#10+' Access数据文件备份成功!',mtInformation,[mbYes],0)
else
MessageDlg(#13+#10+' Access数据文件备份失败!' ,mtWarning,[mbYes],0);
end;
//数据恢复(先删除原数据库文件,再把备份数据库文件写入)。
procedure TMainForm.BitBtn2Click(Sender: TObject);
var
F:TShFileOpStruct;
begin
if MessageDlg('数据还原将重写当前Access数据。'+#13+#10+
''+#13+#10+
'你确定要还原备份数据吗?',mtConfirmation,
[mbyes,mbno], 0) = mrno then Exit;
F.wnd:=Handle;
F.wFunc:=Fo_Delete;//操作方式:删除数据
F.pFrom:=pAnsichar(ExtractFileDir(Application.ExeName)+'\Data\FB.mdb'+#0);
F.fFlags:=FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;//设置操作选项
DM.Dataconn.Connected:=False;//断开连接
//将文件删除至回收站
//if ShFileOperation(F) <> 0 then
// MessageDlg('删除Access原始数据文件出错。数据库恢复失败!',mtError,[mbYes],0)
//else
begin
//设置文件选项
OpenDialog1.Filter:='Access文件(*.mdb) ¦*.mdb';
OpenDialog1.InitialDir:=ExtractFileDir(Application.ExeName)+'\Backup\';
OpenDialog1.Title:='请选择备份文件';
if OpenDialog1.Execute then//打开拷贝文件对话框
//拷贝文件
if CopyFile(PChar(OpenDialog1.FileName),
PChar(ExtractFileDir(Application.ExeName)+'\Data\FB.mdb'),False) then
MessageDlg('Access数据文件恢复完成。数据库恢复成功。',mtInformation,[mbYes],0);
DM.Dataconn.Connected:=True;//恢复连接
end;
end;
Paradox数据库备份
procedure TDataBackupForm.BitBtn1Click(Sender: TObject);
begin
if MessageDlg('备份数据库将重写以前的数据备份。'+#13+#10+
''+#13+#10+
'你确定要备份数据库吗?',mtConfirmation,
[mbyes,mbno], 0) = mrno then Exit;
if Trim(Edit1.Text)='' then
begin
MessageDlg('请选择数据库备份路径!',mtInformation,[mbYes],0);
Edit1.setfocus;
Exit;
end;
Path:=False;
ProgressBar1.Visible:=True;
try
begin
dir:=dir+'\data\';//获取源数据库所在目录
createdir(pchar(Edit1.Text));//创建备份目录
//备份数据表(cl)
CopyFile(pchar(dir+'cl.DB'),pchar(Edit1.Text+'\'+'cl.DB'),False);
CopyFile(pchar(dir+'cl.FAM'),pchar(Edit1.Text+'\'+'cl.FAM'),False);
CopyFile(pchar(dir+'cl.PX'),pchar(Edit1.Text+'\'+'cl.PX'),False);
CopyFile(pchar(dir+'cl.TV'),pchar(Edit1.Text+'\'+'cl.TV'),False);
//备份数据表(clcl)
CopyFile(pchar(dir+'clcl.DB'),pchar(Edit1.Text+'\'+'\clcl.DB'),False);
CopyFile(pchar(dir+'clcl.FAM'),pchar(Edit1.Text+'\'+'\clcl.FAM'),False);
CopyFile(pchar(dir+'clcl.PX'),pchar(Edit1.Text+'\'+'\clcl.PX'),False);
CopyFile(pchar(dir+'clcl.TV'),pchar(Edit1.Text+'\'+'\clcl.TV'),False);
//备份数据表(pz)
CopyFile(pchar(dir+'pz.DB'),pchar(Edit1.Text+'\'+'\pz.DB'),False);
CopyFile(pchar(dir+'pz.FAM'),pchar(Edit1.Text+'\'+'\pz.FAM'),False);
CopyFile(pchar(dir+'pz.PX'),pchar(Edit1.Text+'\'+'\pz.PX'),False);
CopyFile(pchar(dir+'pz.TV'),pchar(Edit1.Text+'\'+'\pz.TV'),False);
//备份数据表(users)
CopyFile(pchar(dir+'users.DB'),pchar(Edit1.Text+'\'+'\users.DB'),False);
CopyFile(pchar(dir+'users.FAM'),pchar(Edit1.Text+'\'+'\users.FAM'),False);
CopyFile(pchar(dir+'users.PX'),pchar(Edit1.Text+'\'+'\users.PX'),False);
CopyFile(pchar(dir+'users.TV'),pchar(Edit1.Text+'\'+'\users.TV'),False);
//备份数据表(ylfb)
CopyFile(pchar(dir+'ylfb.DB'),pchar(Edit1.Text+'\'+'\ylfb.DB'),False);
CopyFile(pchar(dir+'ylfb.FAM'),pchar(Edit1.Text+'\'+'\ylfb.FAM'),False);
CopyFile(pchar(dir+'ylfb.PX'),pchar(Edit1.Text+'\'+'\ylfb.PX'),False);
CopyFile(pchar(dir+'ylfb.TV'),pchar(Edit1.Text+'\'+'\ylfb.TV'),False);
Thread.execute;//执行线程
//设置界面
ShellTreeView1.Visible:=False;
DataBackupForm.Height:=312;
MessageDlg(#13+#10+' 数据库备份成功!',mtInformation,[mbYes],0);
ProgressBar1.Visible:=False;
ProgressBar1.Position:=0;
end;
except
ShellTreeView1.Visible:=False;
DataBackupForm.Height:=312;
MessageDlg(#13+#10+'数据库备份失败!' ,mtWarning,[mbYes],0);
end;
Path:=True;
ShellTreeView1.Visible:=False;
DataBackupForm.Height:=312;
BitBtn3.Caption:='选择目录';
end;
SQL方式
//获取数据备份目的路径
procedure TDataBackForm.FormShow(Sender: TObject);
var
SourcePath: string;
begin
Animate1.Visible:=False;
SourcePath:=ExtractFileDir(Application.ExeName);
//获取应用程序路径
if (StrLen(PChar(SourcePath)) <> 3) then
begin
SourcePath:=SourcePath+'\';
//Edit1.Text:=SourcePath+'BackupData\Data'+
// formatdatetime('yyyymmdd',date)+'.back';
//设置路径名+文件名
Edit1.Text:=SourcePath+'BackupData\'+'BackupData.back';
end;
end;
//改变恢复数据按钮的使能状态(随数据备份目的路径的选择而变化)
procedure TDataBackForm.Edit1Change(Sender: TObject);
begin
if trim(Edit1.Text) <> '' then
BackData.Enabled:=True
else
RecoverData.Enabled:=False;//当路径框中为空时候, 恢复数据不可用
end;
//浏览数据备份目的路径
procedure TDataBackForm.BitBtn4Click(Sender: TObject);
begin
//OpenDialog1.Filter:='备份文件(*.back) ¦*.back ¦所有文件(*.*) ¦*.*';//设置备份文件后缀
OpenDialog1.Filter:='所有文件(*.*) ¦*.* ¦备份文件(*.back) ¦*.back';//设置备份文件后缀
OpenDialog1.InitialDir:=ExtractFileDir(Application.ExeName)+'\backupdata';
//设置恢复路径
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
//if SaveDialog1.Execute then
//Edit1.Text:=OpenDialog1.FileName;
end;
//备份数据
procedure TDataBackForm.BackDataClick(Sender: TObject);
var
DataPath:string;
begin
if Trim(Edit1.Text)='' then
begin
MessageDlg(#13+#10+'请选择数据库备份路径!',mtInformation,[mbYes],0);
Edit1.setfocus;
Exit;
end;
Caption:='正在备份数据....';
Animate1.Visible:=True;
Animate1.Active:=True;//备份数据库命令语句
if ExtractFileExt(Edit1.Text)='.back' then
DataPath:=''
else
DataPath:='.back';
Edit1.Text:=Edit1.Text+DataPath;
DM.backcomm.CommandText:='backup database Data1 to disk='''+Edit1.Text+'''';
try
DM.backcomm.Execute;//执行备份
Animate1.Active:=False;
Animate1.Visible:=False;
MessageDlg(#13+#10+'数据库备份成功!',mtInformation,[mbYes],0);
except
Animate1.Active:=False;
Animate1.Visible:=False;
MessageDlg(#13+#10+'数据库备份失败!',mtWarning,[mbYes],0);
end;
Caption:='数据备份和恢复';
转载于:https://www.cnblogs.com/yplong/archive/2012/02/21/2361530.html
多种数据DELPHI备份方式(源码)相关推荐
- Linux内核网络协议栈:udp数据包发送(源码解读)
<监视和调整Linux网络协议栈:接收数据> <监控和调整Linux网络协议栈的图解指南:接收数据> <Linux网络 - 数据包的接收过程> <Linux网 ...
- 2020大数据学习资料,全套源码无加密网盘下载
点击上方蓝字"优派编程"选择"加为星标",第一时间关注原创干货 前言--–2020最新大数据完整版,全套源码无加密网盘下载 java大数据: 大数据(big d ...
- 分享Delphi处理EXCEL源码
分享Delphi处理EXCEL源码,源码如下: (*************************************************************************** ...
- GK309协议电子工牌数据模拟器+Socket数据发送 JAVA版-源码
GK309协议电子工牌数据模拟器+Socket数据发送 JAVA版-源码 说明 源码 EXE执行文件 说明 单JAVA文件,直接运行main方法即可. 只做了GK309的基础位置数据模拟: 0x01 ...
- 【博主推荐】大数据可视化大屏(源码下载)
可视化大屏交流学习 提示:本文推荐好的大数据可视化源码,用于学习,用于项目,欢迎大家积极交流.持续更新贴-- 资源目录 可视化大屏交流学习 一. 某公司大数据展示模版2 二.大数据可视化通用素材 三. ...
- MES系统汽车底盘生产线数据追溯糸统源码
MES系统汽车底盘生产线数据追溯糸统源码,V B开发,下连十几个站点西门子1200PLC,可改成其它品牌P L C,代码只需少量改动,报表,系统在主机厂稳定运行多年,可轻易升级到.net,攻城狮学习参 ...
- java幻灯片效果_Java实现多种幻灯片切换特效(附源码)
Java实现多种幻灯片切换特效(附源码)以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 功能说明 代码实现了多种幻灯片变 ...
- 最新版2023免费设计艺术签名多种模式微信小程序源码 支持微信流量主功能
某交易网站上卖500元的源码,免费设计艺术签名,支持微信流量主 下载链接 网盘源码 密码:3lev 背景 近年来,微信小程序已经成为了移动互联网领域中的一个重要平台,它可以帮助开发者轻松地开发和发 ...
- 分享一套php版本的ERP系统,内涵数据可视化大屏源码对接系统数据
声明:erp不是原创,采用网上的系统,可视化源码是原创,如有侵权请联系作者删除. 源码下载地址: null一套php版本的ERP进销存管理系统加对接系统的数据可视化大屏源码,亲测可用技术栈:php,m ...
最新文章
- f是一个python内部变量类型,Python基础变量类型——List浅析
- Python 技术篇-基于随机数的uuid码的生成
- JAVA获取系统相关的信息
- linux vim下删除一行和多行
- java maven module_java – Maven JDK9模块:无法解析module-info
- python保存与加载LGBM模型,并解决报错TypeError: Need at least one training dataset or model file or model string..
- php中file文件操作函数readfile fread fgets fgetc以及不需要加fopen的file_get_contents file_put_contents file()
- centos 安装qrcode 二维码
- python处理数据表_表操作,数据操作,单表查询,python操作数据库
- Google今日公布VR SDK 1.0 bete测试版
- 阿里云服务器带宽不够升级怎么收费?
- 天下武功,无坚不破,唯快不破
- Boboniu Plays Chess (模拟构造)
- ChemDraw绘制DNA结构的技巧
- 到底人工智能前景好不 首选哪个开发语言好
- 29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
- 荣耀v10升级android10,大快人心?荣耀V10、荣耀8X、荣耀10,可以升级EMUI10了
- 年薪达 35 万元,杭州成为薪酬最高的城市,北上、重庆通勤时间最久,揭晓 2022 年最具潜力的软件名城!...
- 如何获取3ds Max 2018序列号和密钥
- 18000-6c协议阅读笔记
热门文章
- sql int转换为varchar_常见SQL优化实践
- 计算机组成原理 输入输出系统,计算机组成原理(第七章输入输出系统
- 观念什么意思_俗语“女怕午时生,男怕子夜临”是啥意思?古人的忌讳有道理吗?...
- php和 sqlserver效率,SQLServer语句执行效率及性能测试
- mysql一个索引占用G_mysql 索引 使用注意细节
- 原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
- 年度总结和计划:去年4个1,今年5个1
- 【基于libRTMP的流媒体直播之 AAC、H264 推送】
- 信息安全系统设计基础第十一周学习总结
- 数据结构和算法-001 数组