📄 databaserestore.pas
字号:
unit Databaserestore;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mask, wwdbedit, Wwdotdot, StdCtrls, inifiles, adodb,
Base_C;
type
Tfrmdatabaserestore = class(TfrmBase_C)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit1: TEdit;
Edit3: TEdit;
Label3: TLabel;
dbstart: TwwDBComboDlg;
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
procedure dbstartCustomDlg(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmdatabaserestore: Tfrmdatabaserestore;
implementation
uses Global;
{$R *.dfm}
procedure Tfrmdatabaserestore.dbstartCustomDlg(Sender: TObject);
begin
inherited;
opendialog1.Options:=[ofFileMustExist];
if opendialog1.Execute then
dbstart.Text:=opendialog1.FileName;
end;
procedure Tfrmdatabaserestore.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
frmdatabaserestore:=nil;
end;
procedure Tfrmdatabaserestore.Button2Click(Sender: TObject);
var
s:string;
ini:Tinifile;
sqlstr:String;
begin
inherited;
if Trim(Edit1.Text)='' then
begin
messagedlg('SQL登入名不能为空 ! ',mtError,[mbok],0);
Exit;
end;
if Trim(Edit2.Text)='' then
begin
messagedlg('密码不能为空 ! ',mtError,[mbok],0);
Exit;
end;
if Trim(Edit3.Text)='' then
begin
messagedlg('SQL主机地址不能为空 ! ',mtError,[mbok],0);
Exit;
end;
if Trim(dbstart.Text)='' then
begin
messagedlg('没有指定SQL文件!',mtError,[mbok],0);
Exit;
end;
s:=GetLogDir('Log')+'adolinksetting.ini';
if not fileExists(s) then
begin
messagedlg('sql连接设置有误,请联系系统管理员 !',mtError,[mbok],0);
Exit;
end;
try
ini:=Tinifile.Create(s);
if Trim(uppercase(edit1.Text))<>Trim(uppercase(ini.ReadString('Login','User ID',''))) then
begin
messagedlg('SQL登入名错误 ! ',mterror,[mbok],0);
exit;
end;
if Trim(edit2.Text)<>Trim(f_encrypt(ini.ReadString('Login','Password',''))) then
begin
messagedlg('密码不正确 !',mterror,[mbok],0);
exit;
end;
if Trim(uppercase(edit3.Text))<>Trim(uppercase(ini.ReadString('Login','Server Name',''))) then
begin
messagedlg('SQL主机地址不正确 !',mterror,[mbok],0);
exit;
end;
finally
ini.Free;
end;
sqlstr:='';
sqlStr:='use Master ALTER DATABASE '+Trim(gs_GetDBName)+' set offline with rollback immediate ';
sqlstr:=sqlstr+' RESTORE DATABASE '+Trim(gs_GetDBName)+' FROM DISK ='+quotedstr(dbstart.Text);
sqlstr:=sqlstr+' with file=1,replace ';
sqlstr:=sqlstr+' alter database '+gs_GetDBName+' set online with rollback immediate ';
sqlstr:=sqlstr+' Use '+gs_GetDBName;
try
Screen.Cursor :=crSqlWait;
if cexecsql(sqlStr) then
begin
messagedlg('还原成功 !',mtWarning,[mbok],0);
csyslog(self.Name,'成功还原数据库 ');
frmdatabaserestore.close;
end
else
begin
messagedlg('还原数据库失败 ! ',mtError,[mbok],0);
csyslog(self.Name,'还原数据库失败');
Exit;
end;
except
on E:exception do
begin
screen.Cursor:=crDefault;
messagedlg('还原数据库失败! '+#10#13+E.Message,mtError,[mbok],0);
Exit;
end;
end;
screen.Cursor:=crDefault;
end;
procedure Tfrmdatabaserestore.Button1Click(Sender: TObject);
begin
inherited;
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -