zoukankan      html  css  js  c++  java
  • 多种数据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:='数据备份和恢复';

  • 相关阅读:
    Jersey 2.x 运行项目
    Jersey 2.x 探索新建的工程
    Jersey 2.x 从Maven Archetype 创建一个新项目
    Jersey 2.x 服务器端应用支持的容器
    Jersey 2.x JDK 上的客户端应用
    Jersey 2.x 基于 Servlet 的服务器端应用
    =面试题:java面试基本方向 背1 有用 项目二技术学完再看
    面试题:项目开发经验总结 框架 比较难的问题 可以找一下有用
    面试题: !=!=未看
    面试题:大公司面试题 !=!=未看
  • 原文地址:https://www.cnblogs.com/yplong/p/2361530.html
Copyright © 2011-2022 走看看