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

📄 u_data_backup.pas

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

interface

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

type
  TFrm_data_backup = class(TForm)
    Btn_Cancel: TRzBitBtn;
    Btn_ok: TRzBitBtn;
    ImageList1: TImageList;
    FileListBox1: TFileListBox;
    Btn_del: TRzBitBtn;
    Timer1: TTimer;
    Bar1: TRzProgressBar;
    Label1: TLabel;
    ListView1: TRzListView;
    ADOConn: TADOConnection;
    ADOQ: TADOQuery;
    DS_Q: TDataSource;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Btn_CancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ListView1Change(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure Btn_delClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Btn_okClick(Sender: TObject);
    procedure Add_bak_file;
  private
    n:integer;
    str_bak:string;  //存放备份文件名称
    S_server,S_database,S_user:string;
    str_con:string;
  public
    function data_backup:boolean;
  end;

var
  Frm_data_backup: TFrm_data_backup;

implementation

uses U_dm,u_main;

{$R *.dfm}
function TFrm_data_backup.data_backup:boolean;
var
    temp_bak:string;
    ListItem: TListItem;
    Exit_BackFile:Boolean;
    n:integer;
begin
  try
         result:=False;
         temp_bak:='d:\backup\'+datetostr(now)+'.bak';
          //连接数据库

               if not Adoconn.Connected then begin
                  Adoconn.Connected:=False;
                  Adoconn.KeepConnection:=False;
                  Adoconn.ConnectionString:=str_con; //接口
                  Adoconn.LoginPrompt:=False;
                  Adoconn.Connected:=true;
               end;
                //打开数据集
                 ADOQ.Close;
                 ADOQ.SQL.Clear;
                 ADOQ.SQL.Add('backup database '+S_database+' to disk ='''+temp_bak+'''');
                 ADOQ.ExecSQL;
                 //添加备份文件
                 Exit_BackFile:=false;
                 for n:=0 to listview1.Items.Count-1 do begin
                       if listview1.Items[n].Caption=datetostr(now)+'.bak' then begin
                          Exit_BackFile:=true;
                       end;
                 end;
                 if Exit_BackFile=false then begin
                     listitem:=listview1.items.Add;
                     listitem.Caption:=datetostr(now)+'.bak';
                     listitem.ImageIndex:=0;
                 end;

          Result:=True;
     except
           Result:=False;
           bar1.Percent:=0;
     end;
end;
procedure TFrm_data_backup.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_backup.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TFrm_data_backup.Btn_CancelClick(Sender: TObject);
begin
  dm.Adoconn.Connected:=false;
  Frm_data_backup.Close;
end;

procedure TFrm_data_backup.FormCreate(Sender: TObject);
begin
   //接口-----------------------------------------------  
   S_server:=u_main.str_server;
   S_database:=u_main.str_database;
   S_user:=u_main.str_user;
   //---------------------------------------------------
   str_con:='Provider=SQLOLEDB.1;Password=sxxy;User ID=sa;Initial Catalog='+S_database+';Data Source='+S_server;
   Add_bak_file;
end;

procedure TFrm_data_backup.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_backup.Caption:='数据库备份--'+str_bak;
    end
    else begin
       Btn_del.Enabled:=False;
       Btn_ok.Enabled:=True;
       Frm_data_backup.Caption:='数据库备份';
    end;
end;

procedure TFrm_data_backup.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_backup.Timer1Timer(Sender: TObject);
begin
    n:=n+1;
    frm_data_backup.caption:='数据库备份--正在生成'+datetostr(now)+'.bak'+'数据备份文件';
    Bar1.Percent:=n*20;
    if n=3 then data_backup;
    if n=5 then begin
       Timer1.Enabled:=False;
       Bar1.Percent:=0;
       frm_data_backup.caption:='数据库备份--'+datetostr(now)+'.bak'+'文件备份完成';
       N:=0;
    End;
end;

procedure TFrm_data_backup.Btn_okClick(Sender: TObject);
begin
   Timer1.Enabled:=True;
end;

end.

⌨️ 快捷键说明

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