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

📄 databaserestore.pas

📁 车辆管理系统
💻 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 + -