?? mainfrm.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 + -