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

📄 uquery.pas

📁 该EXE软件可以免去通过SQL EXPLOR或者数据库查询界面进行查询的麻烦
💻 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 + -