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

📄 mainfrm.pas

📁 以前自己写的工具
💻 PAS
字号:
unit mainfrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls,AdoDb, Grids, ValEdit;
const EnKey='12553649764327656689569879822442242';
      conn='Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=%s;Initial Catalog=%s;User ID=%s;Password=%s';
type
  TMainForm = class(TForm)
    Label1: TLabel;
    EditServerName: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    EditUserName: TEdit;
    EditPassWord: TEdit;
    ConnectBtn: TButton;
    RefreshBtn: TButton;
    StatusBar1: TStatusBar;
    ClearBtn: TButton;
    CheckBox1: TCheckBox;
    MainSg: TStringGrid;
    procedure ConnectBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RefreshBtnClick(Sender: TObject);
    procedure ClearBtnClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
    ConnStr:string;
    procedure ReadINIfile;
    procedure DataBaseList;
    procedure SetConnStr;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation
uses inifiles,des;
{$R *.dfm}

procedure TMainForm.ConnectBtnClick(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:='Connecting...';
  SetConnStr;
  //ConnStr:=Format(conn,[servername,'master',username,password]);
  MainSg.Rows[1].Clear;
  DataBaseList;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin

  MainSg.ColWidths[0]:=100;
  MainSg.ColWidths[1]:=100;
  MainSg.Cells[0,0]:='DataBase';
  MainSg.Cells[1,0]:='Size';
  ReadINIfile;
  if Trim(EditPassWord.Text)<>'' then
    CheckBox1.Checked:=True;
end;

procedure TMainForm.RefreshBtnClick(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:='Refreshing databases list...';
  SetConnStr;
  DataBaseList;
  StatusBar1.Panels[0].Text:='Refreshed databases list';
end;

procedure TMainForm.ClearBtnClick(Sender: TObject);
var
  Query:TAdoQuery;
  dbname:string;
begin
  SetConnStr;
  dbname:=Trim(MainSg.Cells[0,MainSg.Selection.TopLeft.Y]);
  if dbname='' then
  begin
    MessageBox(Handle,'Please select a database!','Errors',MB_OK+MB_ICONWARNING);
    exit;
  end;
  //ConnStr:=Format(conn,[servername,'master',username,password]);
  Query:=TAdoQuery.Create(nil);
  StatusBar1.Panels[0].Text:='Clearing '+dbname+'''s log....';
  try
    Query.ConnectionString:=ConnStr;
    Query.SQL.Clear;
    Query.SQL.Add('backup log ['+dbname+'] with no_log ');
    Query.SQL.Add('dbcc shrinkdatabase(['+dbname+'])');
    //showmessage(query.SQL.GetText);
    //exit;
    Query.ExecSQL;
    Query.Close;
    Query.Free;
    DataBAseList;
  except
    Query.Close;
    Query.Free;
  end;

end;

procedure TMainForm.CheckBox1Click(Sender: TObject);
var
  MyiniFile:TIniFile;
  servername,username,password:string;
begin
  servername:=Trim(EditServerName.Text);
  username:=Trim(EditUserName.Text);
  password:=EncryStrHex(EditPassWord.Text,EnKey);//(Trim(EditPassWord.Text),EnKey);
  if CheckBox1.Checked then
  begin
    try
      myinifile:=TInifile.Create('./set.ini');
      myinifile.WriteString('MySet','DbHost',servername);
      myinifile.WriteString('MySet','UserName',username);
      myinifile.WriteString('MySet','UserPsd',password);
      myinifile.Free;
    except
      myinifile.Free;
      StatusBar1.Panels[0].Text:='can not read Set.ini!';
      MessageBox(Handle,'can not read Set.ini!','Errors',MB_OK+MB_ICONWARNING);
    end;

  end
  else
  begin
    try
      myinifile:=TInifile.Create('./set.ini');
      myinifile.WriteString('MySet','DbHost',servername);
      myinifile.WriteString('MySet','UserName',username);
      myinifile.WriteString('MySet','UserPsd','');
      myinifile.Free;
    except
      myinifile.Free;
    end;
  end;
end;

procedure TMainForm.ReadINIfile;
var
  myinifile:Tinifile;
begin
  try
    myinifile:=TInifile.Create('./set.ini');
    EditServerName.Text:=Trim(myinifile.ReadString('MySet','DbHost',''));
    EditUserName.Text:=Trim(myinifile.ReadString('MySet','UserName',''));
    if Trim(myinifile.ReadString('MySet','UserPsd',''))<>'' then
      EditPassWord.Text:=DecryStrHex(Trim(myinifile.ReadString('MySet','UserPsd','')),EnKey)
    else
      EditPassWord.Text:=Trim(myinifile.ReadString('MySet','UserPsd',''));
    myinifile.Free;
  except
    myinifile.Free;
  end;
end;

procedure TMainForm.DataBaseList;
var
  Query:TAdoQuery;
  i:integer;
begin
  Query:=TAdoQuery.Create(nil);
  try
    Query.ConnectionString:=ConnStr;
    Query.SQL.Clear;
    Query.SQL.Add('exec sp_databases');
    Query.Open;
    if Query.RecordCount<1 then
    begin
      MainSg.RowCount:=2;
      MainSg.Rows[1].Clear;
    end
    else
    begin
      MainSG.RowCount:=Query.RecordCount+1;
      for i:=0 to Query.RecordCount-1 do
      begin
        StatusBar1.Panels[0].Text:='Getting databases list....';
        MainSg.Cells[0,i+1]:=Query.FieldByName('DATABASE_NAME').AsString;
        MainSg.Cells[1,i+1]:=Format('%.2f MB',[Query.FieldByName('DATABASE_SIZE').AsFloat/1024]);
        Query.Next;
      end;
      Query.close;
      Query.free;
    end;
    StatusBar1.Panels[0].Text:='Get databases list finish!';
  except
    Query.Close;
    Query.Free;
    StatusBar1.Panels[0].Text:='Can not connect server';
    MessageBox(Handle,'Can not connect server','Errors',MB_OK+MB_ICONWARNING);

  end;
end;

procedure TMainForm.SetConnStr;
var
  servername,username,password:string;
begin
  servername:=Trim(EditServerName.Text);
  username:=Trim(EditUsername.Text);
  password:=Trim(EditPassWord.Text);
  if (servername='') or (username='') then
  begin
    MessageBox(Handle,'Please input server and username!','Errors',MB_OK+MB_ICONWARNING);
    exit;
  end;
  ConnStr:=Format(conn,[servername,'master',username,password]);

end;

end.

⌨️ 快捷键说明

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