📄 uquery.pas
字号:
unit UQuery;
interface
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ActnList,
StdCtrls,
ExtCtrls,
DB,
DBTables,
Grids,
IniFiles,
TypInfo,
DBGrids,
ComCtrls,
StdActns,
Menus,
Hua_ApplyTheme,
RzEdit,
RzDBGrid,
RzTabs,
RzBmpBtn,
Mask,
RzCmboBx,
RzLabel,
RzStatus,
RzPanel,
RzBckgnd,
RzSplit, RzButton;
type
TForm1 = class(TForm)
RzPanel1: TRzPanel;
RzPanel3: TRzPanel;
lblUser: TLabel;
RzStatusBar1: TRzStatusBar;
RzStatusPane1: TRzStatusPane;
RzStatusPane2: TRzStatusPane;
RzStatusPane3: TRzStatusPane;
RzBackground2: TRzBackground;
RzBackground3: TRzBackground;
ActionList1: TActionList;
actDoSQL: TAction;
actConnection: TAction;
actFind: TAction;
DataSource1: TDataSource;
Query1: TQuery;
PopupMenu1: TPopupMenu;
F31: TMenuItem;
FindDialog1: TFindDialog;
Database1: TDatabase;
MyTheme1: TMyTheme;
RzPanel8: TRzPanel;
RzBackground4: TRzBackground;
RzBackground1: TRzBackground;
RzSizePanel1: TRzSizePanel;
RzPanel2: TRzPanel;
RzLabel1: TRzLabel;
RzLabel2: TRzLabel;
RzLabel3: TRzLabel;
RzLabel4: TRzLabel;
edtDatabaseName: TRzComboBox;
edtPassword: TRzEdit;
edtUserName: TRzEdit;
RzMemo1: TRzMemo;
RzPanel4: TRzPanel;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
RzDBGrid1: TRzDBGrid;
TabSheet2: TRzTabSheet;
RzRichEdit1: TRzRichEdit;
RzButton1: TRzButton;
RzButton2: TRzButton;
procedure actDoSQLExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure actConnectionExecute(Sender: TObject);
procedure actFindExecute(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
section = 'CONFIG';
var
Ini: TIniFile;
DBName, UserName, Password: string;
procedure TForm1.actDoSQLExecute(Sender: TObject);
begin
with query1 do
begin
close;
sql.Clear;
sql.Add(Rzmemo1.Text);
try
try
open;
except
execsql;
end;
except
showmessage('请确认你的SQL语句是否正确!');
exit;
end;
end;
RzPageControl1.ActivePage := TabSheet1
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
lpBuf: PChar;
lSize: ^dword;
List: Tstrings;
begin
MyTheme1.ApplyTheme(self);
Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'DBConnection.cfg');
with Ini do
begin
DBName := Ini.ReadString(section, 'databasename', 'FG2000');
UserName := Ini.ReadString(section, 'username', 'db2admin');
password := Ini.ReadString(section, 'password', 'db2admin');
end;
edtDatabaseName.Text := DBName;
edtUserName.Text := UserName;
edtPassword.Text := Password;
try
with Database1 do
begin
AliasName := DBName;
DatabaseName := 'DataBaseName';
Params.Append('USER NAME=' + UserName);
Params.Append('PASSWORD=' + password);
KeepConnection := True;
LoginPrompt := False;
connected := True;
end;
except
showmessage('连接数据库出错,请确定输入的数据库名、用户名和密码是否正确!');
RzStatusPane1.Caption := '数据库连接失败!';
exit;
end;
try
session.GetDatabaseNames(edtDatabaseName.Items);
except
end;
Query1.DatabaseName := Database1.DatabaseName;
Database1.GetTableNames(RzRichEdit1.Lines);
for i := RzRichEdit1.Lines.Count - 1 downto 0 do
begin
if (copy(RzRichEdit1.Lines.Strings[i], 1, pos('.', RzRichEdit1.Lines.Strings[i]) - 1) = 'SYSIBM')
or (copy(RzRichEdit1.Lines.Strings[i], 1, pos('.', RzRichEdit1.Lines.Strings[i]) - 1) = 'SYSCAT')
or (copy(RzRichEdit1.Lines.Strings[i], 1, pos('.', RzRichEdit1.Lines.Strings[i]) - 1) = 'SYSSTAT') then
RzRichEdit1.Lines.Delete(i);
end;
RzPageControl1.ActivePageIndex := 0;
RzStatusPane1.Caption := '数据库连接成功!';
GetMem(lpBuf, 255);
New(lSize);
lSize^ := 255;
if GetUserName(lpBuf, lSize^) then
RzStatusPane2.Caption := '用户:'+strpas(lpBuf)
else
RzStatusPane2.Caption := '不知名用户';
FreeMem(lpBuf, 255);
Dispose(lSize);
RzStatusPane3.Caption := '启动时间:' + datetimetostr(now);
RzPageControl1.ActivePage := TabSheet2
end;
procedure TForm1.actConnectionExecute(Sender: TObject);
var
i: integer;
begin
if trim(edtDatabaseName.text) = '' then
exit;
try
with Database1 do
begin
Connected := False;
AliasName := trim(edtDatabaseName.text);
DatabaseName := 'DataBaseName';
Params.Clear;
Params.Append(Format('USER NAME=%s', [trim(edtUserName.Text)]));
Params.Append(Format('PASSWORD=%s', [trim(edtPassword.Text)]));
KeepConnection := True;
LoginPrompt := False;
Connected := True;
end;
Query1.DatabaseName := database1.DatabaseName;
with Ini do
begin
Ini.WriteString(section, 'databasename', trim(edtDatabaseName.text));
Ini.WriteString(section, 'username', trim(edtUserName.Text));
Ini.WriteString(section, 'password', trim(edtPassword.Text));
end;
except
showmessage('连接数据库出错,请确定输入的数据库名、用户名和密码是否正确!');
RzStatusPane1.Caption := '数据库连接失败!';
exit;
end;
Database1.GetTableNames(RzRichEdit1.Lines);
for i := RzRichEdit1.Lines.Count - 1 downto 0 do
begin
if (copy(RzRichEdit1.Lines.Strings[i], 1, pos('.', RzRichEdit1.Lines.Strings[i]) - 1) = 'SYSIBM')
or (copy(RzRichEdit1.Lines.Strings[i], 1, pos('.', RzRichEdit1.Lines.Strings[i]) - 1) = 'SYSCAT') then
RzRichEdit1.Lines.Delete(i);
end;
RzStatusPane1.Caption := '数据库连接成功!';
RzPageControl1.ActivePage := TabSheet2
end;
procedure TForm1.actFindExecute(Sender: TObject);
begin
FindDialog1.Execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
with RzRichEdit1 do
begin
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;
ToEnd := Length(Text) - StartPos;
FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, []);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
end
else
messagedlg('没有你想要找的内容或已查找完毕', mtconfirmation, [mbYes], 0);
end;
PostMessage(RzRichEdit1.Handle, EM_SCROLLCARET, 0, 0);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -