⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_data_restore.pas

📁 对SQLSERVER数据库实现备份、恢复、压缩
💻 PAS
字号:
unit U_data_restore;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,  RzButton, StdCtrls, FileCtrl,ImgList, ComCtrls, RzListVw, RzPrgres;

type
  TFrm_data_restore = class(TForm)
    Btn_Cancel: TRzBitBtn;
    Btn_ok: TRzBitBtn;
    ImageList1: TImageList;
    FileListBox1: TFileListBox;
    Btn_del: TRzBitBtn;
    Bar1: TRzProgressBar;
    Label1: TLabel;
    Timer1: TTimer;
    ListView1: TRzListView;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Btn_CancelClick(Sender: TObject);
    procedure Btn_okClick(Sender: TObject);
    procedure Btn_delClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ListView1Change(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure Timer1Timer(Sender: TObject);
    procedure Add_bak_file;
  private
    n:integer;
    connstr_Restore,connstr:string;
    str_bak:string;  //存放备份文件名称
  public
    Function Data_Restore:boolean;
  end;

var
  Frm_data_restore: TFrm_data_restore;

implementation

uses U_dm;

{$R *.dfm}
//数据恢复函数
Function TFrm_data_restore.Data_Restore:boolean;
var
    temp_bak:string;
begin
    try
     result:=False;
     if listview1.SelCount>0 then begin
           temp_bak:='d:\backup\'+listview1.Selected.Caption;
            //连接数据库
            with dm do begin
                 if Adoconn.Connected then begin
                    Adoconn.Connected:=False;
                    Adoconn.KeepConnection:=False;
                 end;
                    connstr_restore:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Main;Data Source=(local)';
                    connstr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Main;Data Source=(local)';
                    Adoconn.ConnectionString:=connstr_Restore;
                    Adoconn.LoginPrompt:=False;
                    Adoconn.Connected:=true;
                  //打开数据集
                   ADOQ.Close;
                   ADOQ.SQL.Clear;
                   ADOQ.SQL.Add('restore database main From disk ='''+temp_bak+'''');
                   ADOQ.ExecSQL;
                  //重新连接数据库
                    Adoconn.Connected:=False;
                    Adoconn.KeepConnection:=False;
                    Adoconn.ConnectionString:=connstr;
                    Adoconn.LoginPrompt:=False;
                    Adoconn.Connected:=true;
            end;
            Result:=true;
     end;
    except
      Result:=False;
      bar1.Percent:=0;
    end;
end;

procedure TFrm_data_restore.Add_bak_file;
var
 ListItem: TListItem;
 I:integer;
begin 
FileListBox1.Directory:='d:\backup\';
filelistbox1.Update;
  for i:=0 to FileListBox1.Items.Count-1 do begin
          listitem:=listview1.items.Add;
          listitem.Caption:=FileListBox1.Items.Strings[i];
          listitem.ImageIndex:=0;
  end; 
end;

procedure TFrm_data_restore.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TFrm_data_restore.Btn_CancelClick(Sender: TObject);
begin
    dm.Adoconn.Connected:=false;
    Frm_data_restore.close;
end;

procedure TFrm_data_restore.Btn_okClick(Sender: TObject);
begin
   Timer1.Enabled:=True;
   Btn_ok.Enabled:=False;
   Btn_del.Enabled:=False;
   Btn_Cancel.Enabled:=False;
end;

procedure TFrm_data_restore.Btn_delClick(Sender: TObject);
var
  path:string;
begin
  path:='d:\backup\'+listview1.Selected.Caption;
  Deletefile(path);
  if messagedlg('你确实要删除'+str_bak+'备份文件吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then begin
     listview1.Clear;
     add_bak_file;
     Btn_del.Enabled:=False;
  end
  else begin
      Btn_del.Enabled:=False;
      Btn_ok.Enabled:=False;
  end;
end;

procedure TFrm_data_restore.FormCreate(Sender: TObject);
begin
   Add_bak_file;
end;

procedure TFrm_data_restore.ListView1Change(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
    if (ListView1.SelCount>0) and (not timer1.Enabled) then begin
       Btn_del.Enabled:=True;
       Btn_ok.Enabled:=True;
       str_bak:=listview1.Selected.Caption;
       Frm_data_restore.Caption:='数据库恢复--'+str_bak;
    end
    else begin
       Btn_del.Enabled:=False;
       Btn_ok.Enabled:=False;
       Frm_data_restore.Caption:='数据库恢复';
    end;
end;

procedure TFrm_data_restore.Timer1Timer(Sender: TObject);
begin
 n:=n+1;
    Frm_data_restore.Caption:='数据库恢复——'+str_bak+'正在进行数据恢复';
    Bar1.Percent:=n*20;
    if n=3 then Data_Restore;
    if n=5 then begin
       Frm_data_restore.Caption:='数据库恢复——'+str_bak+'数据恢复完成'; 
       Timer1.Enabled:=false;
       Btn_ok.Enabled:=False;
       Btn_del.Enabled:=False;
       Btn_Cancel.Enabled:=true;
       Bar1.Percent:=0;
       N:=0;
    End;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -