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

📄 waitpas1.pas

📁 书籍类别(种类编号
💻 PAS
字号:
{数据备份、还原}
unit WaitPas1;

interface

uses
  Classes, Windows, SysUtils, Dialogs, ADODB ;

type
  WaitPas = class(TThread)
  Filename  : String;   //往线程中注入备份或还原的文件名
  Messages  : String;   //显示信息
  IDs       : Integer;   //识别应该执行什么样的操作
  ADOQ      : TADOQuery;
  //备份文件
  function BackUpData:Boolean;
  //还原文件
  function RevertData:Boolean;
  //关闭等待窗口
  procedure CloseWaitWindow;
  //更新等待窗口信息
  procedure PostMessgesToWaitWindow;
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public
    constructor Create(CaseS: TADOQuery; FileNames:String;LoadID:integer);
  end;

implementation

uses wait,DBM;

{ WaitPas }

function WaitPas.BackUpData:Boolean;
begin
Messages:='正在备份数据库,请稍候……';
Synchronize(PostMessgesToWaitWindow);

with ADOQ do try
   Close;
   SQL.Clear;
   SQL.Add('backup database bargain to disk='+#39+FileName+#39+' WITH INIT');
   Prepared;
   Execsql;
   Result:=true;
except
   Result:=false;
end;

end;

procedure WaitPas.CloseWaitWindow;
begin
WaitForm.Close;
end;

constructor WaitPas.Create(CaseS: TADOQuery; FileNames: String; LoadID: Integer);
begin
//初始化进程
IDs := LoadID;
ADOQ := CaseS;
FileName := FileNames;
inherited Create(False);

end;

procedure WaitPas.Execute;
var IsSucceed : Boolean;
begin
IsSucceed:=false;
case IDs of
   1  :   IsSucceed := BackUpData; //备份
   2  :   IsSucceed := RevertData; //还原
end;
  Synchronize(CloseWaitWindow);
 if IsSucceed then
     Messagebox(0,'数据库维护操作成功!','提示',MB_OK+MB_ICONINFORMATION+MB_TOPMOST)
  ELSE ShowMessage('操作失败!!');
  { Place thread code here }
end;

procedure WaitPas.PostMessgesToWaitWindow;
begin
WaitForm.RzLabel1.Caption:=Messages;
end;

function WaitPas.RevertData: Boolean;
begin
Messages:='正在还原数据库,请稍候……';
Synchronize(PostMessgesToWaitWindow);
with ADOQ do try
   Close;
   SQL.Clear;
   sql.Add('use master');
   sql.Add('ALTER DATABASE bargain SET OFFLINE WITH ROLLBACK IMMEDIATE');
   sql.Add('RESTORE DATABASE bargain FROM DISK ='''+(FileName)+''' with FILE=1,RECOVERY,REPLACE');
   sql.Add('ALTER DATABASE bargain SET ONLINE WITH ROLLBACK IMMEDIATE');
   SQL.Add('Use bargain');
   Prepared;
   execsql;
   Result:=true;
except
   Result:=false;
end;

end;

end.

⌨️ 快捷键说明

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