📄 dbrestoreunit.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 + -