📄 unitbackup.pas
字号:
unit UnitBackup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, FileCtrl, ComCtrls, Buttons, ImgList, Mask, Gauges;
type
TFrmBackup = class(TFrame)
ImageBg: TImage;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Image3: TImage;
Image2: TImage;
GroupBox1: TGroupBox;
Gauge1: TGauge;
procedure Image2Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
uses UnitDBConnect;
{$R *.dfm}
procedure TFrmBackup.Image2Click(Sender: TObject);
var
FileName:string;
strsql:string;
i:integer;
begin
if SaveDialog1.Execute then
begin
FileName:=SaveDialog1.FileName;
showmessage(FileName);
try
with FMDBConnect do
begin
DBADOConnection.Connected:=false;//关闭DBScoreMS数据库
ADOConnectionMaster.Open;
ADOQueryBak.Connection:=FMDBConnect.ADOConnectionMaster;
strsql:='backup database DBScoreMS to disk='''+FileName+'''';
ADOQueryBak.Close;
ADOQueryBak.SQL.Clear;
ADOQueryBak.SQL.Add(strsql);
for i:=Gauge1.MinValue to Gauge1.MaxValue do
Gauge1.Progress := i;
ADOQueryBak.ExecSQL;
ADOConnectionMaster.Connected:=false;//关闭master的连接
DBADOConnection.Connected:=true;
SetQueryActive(self);
ADOQueryBak.Connection:=FMDBConnect.DBADOConnection;
end;
if fileExists(FileName)then
showmessage('已经将 DBScoreMS 备份为:'+FileName);
except
messageDlg('数据备份异常!',MTError,[mbok],0);
end;
end;
end;
procedure TFrmBackup.Image3Click(Sender: TObject);
var
i:integer;
begin
if openDialog1.Execute then
begin
with FMDBConnect do
begin
try
DBADOConnection.Connected:=false;//关闭DBScoreMS数据库
ADOConnectionMaster.Open;
ADOQueryBak.Connection:=ADOConnectionMaster;
ADOQueryBak.Close;
ADOQueryBak.SQL.Clear;
ADOQueryBak.SQL.Add('ALTER DATABASE DBScoreMS SET OFFLINE WITH ROLLBACK IMMEDIATE');
ADOQueryBak.ExecSQL;
ADOQueryBak.Close;
ADOQueryBak.SQL.Clear;
ADOQueryBak.SQL.Add('restore database DBScoreMS From disk='''+openDialog1.FileName+''' ');
for i:=Gauge1.MinValue to Gauge1.MaxValue do
Gauge1.Progress := i;
ADOQueryBak.ExecSQL;
showmessage('顺利完成数据库还原!');
finally
ADOQueryBak.Close;
ADOQueryBak.SQL.Clear;
ADOQueryBak.SQL.Add('ALTER DATABASE DBScoreMS SET ONLINE WITH ROLLBACK IMMEDIATE');//DBScoreMS
ADOQueryBak.ExecSQL;
ADOConnectionMaster.Connected:=false;//关闭master的连接
DBADOConnection.Connected:=true;
ADOQueryBak.Connection:=DBADOConnection;
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -