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

📄 dbrestoreunit.pas

📁 软件可自动完成SQL Server数据库和文档的数据定时自动备份
💻 PAS
字号:
//*-----------------------------------------------------------------------------
//*  系统名称:数据自动备份系统
//*  作    者:陈春华
//*  开发时间:2005
//*  Windows2000 Server + SQL Server2000 + Delphi7
//*  功能简介:
//*              软件可自动完成SQL Server数据库和文档的数据定时自动备份,
//*          由用户选择对哪些数据库或文档进行数据备份,提供对备份、还原
//*          数据作业的管理、分析、日志跟踪等功能,备份频率不受限制。
//*-----------------------------------------------------------------------------

unit DBRestoreUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, ADODB, jpeg, Grids, DBGrids, ComCtrls;

type
  TRestoreForm = class(TForm)
    Image1: TImage;
    GroupBox1: TGroupBox;
    Image2: TImage;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label4: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Image3: TImage;
    Label5: TLabel;
    Label1: TLabel;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label6: TLabel;
    OpenDialog: TOpenDialog;
    Edit5: TEdit;
    DBGrid1: TDBGrid;
    Label7: TLabel;
    Edit6: TEdit;
    DataSource: TDataSource;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  RestoreForm: TRestoreForm;

implementation

{$R *.dfm}
uses SqlFunctionUnit, RestoreThreadUnit;

var
  conn: TADOConnection;
  query: TADOQuery;

procedure TRestoreForm.Button1Click(Sender: TObject);
var
  sqlStr: String;
begin
    try         //连接数据库
      conn:= TADOConnection.Create(nil);
      conn.LoginPrompt:=False;
      ConnectToSqlServer(Edit4.Text, Edit3.Text, Edit2.Text, 'master', conn);
      query:=TADOQuery.Create(nil);
      query.Connection:=conn;
      DataSource.DataSet:=query;
      sqlStr:='select * from sysdatabases';
      ExecuteSQLPro(sqlStr,0,query);
      label6.Caption:='服务器连接成功!';
    except
      label6.Caption:='服务器无法连接!请检查用户和密码!';
    end;
end;

procedure TRestoreForm.Button2Click(Sender: TObject);
begin
  if OpenDialog.Execute then
    Edit1.Text:=OpenDialog.FileName;
end;

procedure TRestoreForm.FormShow(Sender: TObject);
begin
  Edit2.Text:='.';
  Edit3.Text:='sa';
  Edit4.Text:='';
  Edit1.Text:='';
  Edit5.Text:='';
  Edit6.Text:='';
  Label6.Caption:='-----------------------------------------------------------------------------------------------------------';
end;

procedure TRestoreForm.Button4Click(Sender: TObject);
begin
  close;
end;

procedure TRestoreForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  try
    query.Close;
    conn.close;
    query.Free;
    conn.Free;
  except
    exit;      //若数据库被连接成功,则释放,否则退出
  end;
end;

procedure TRestoreForm.DBGrid1CellClick(Column: TColumn);
begin
  Edit5.Text:=DBGrid1.DataSource.DataSet.fieldbyname('name').asstring;
  Edit6.Text:=DBGrid1.DataSource.DataSet.fieldbyname('filename').asstring;
end;

procedure TRestoreForm.Button3Click(Sender: TObject);
var
  restoreThread:TRestoreThread;
begin
  if Application.MessageBox(pchar('警告:请确定关于要被还原的数据库的所有操作已全部停止,否则可能会引起死锁!'),
                pchar('警告'),MB_YesNo+MB_ICONWARNING+MB_DEFBUTTON2)<>IDYes  then
    exit;
  if Application.MessageBox(pchar('警告,数据库:'+Edit5.Text+'的原有数据将被覆盖,而且不可恢复确定吗?'),
                pchar('警告'),MB_YesNo+MB_ICONWARNING+MB_DEFBUTTON2)<>IDYes  then
    exit;
  RestoreForm.Label6.Caption:='数据库'+Edit5.Text+'还原中,请稍后...';
  //^ ---
  restoreThread:= TRestoreThread.Create(Edit5.Text,Edit6.Text,Edit1.Text,conn);
  restoreThread.Resume;
  //^ 启动数据库还原线程
end;

end.

⌨️ 快捷键说明

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