首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 使用 DBExpress 連接遠程 MySQL 資料庫:元件配置與動態參數設置

     編輯:Delphi

前言

DBExpress 是 Delphi 6 引入的跨平台資料庫存取架構,輕量級、無需 BDE,支援 MySQL、InterBase、Oracle、DB2 等。本文示範如何在 Delphi 中使用 TSQLConnection、TSQLClientDataSet 動態配置連接參數並執行 SQL 查詢,連接遠程 MySQL 服務器。

部署前提

  • 將 MySQL 客戶端庫 libmysql.dll 放入程式目錄或系統目錄(Win98: System,NT/2000/XP: System32)。
  • 確保遠程 MySQL 服務器 3306 埠 通暢(防火牆/安全組需放行)。

核心元件架構

關鍵代碼實現

1. 介面佈局要點

  • 輸入區:HostName、User_Name、Password、Database(TEdit)。
  • 操作區:Button1(連接)、ButtonGo(執行 SQL)。
  • SQL 輸入:ESQL(TEdit 或 TMemo)。
  • 顯示區:DBGrid1 綁定 DataSource1 → SQLClientDataSet。

2. 連接按鈕:動態設置參數並打開連接

procedure TForm1.Button1Click(Sender: TObject);
begin
  with SQLConnection do begin
    Close; {確保關閉現有連接}
    Params.Values['HostName'] := HostName.Text;
    Params.Values['UserName'] := User_Name.Text;
    Params.Values['Password'] := Password.Text;
    Params.Values['Database'] := Database.Text;
    try
      Connected := True; {嘗試連接}
      StatusBar1.Panels[0].Text := 'Connect OK';
      ButtonGo.Enabled := True; {連接成功啟用查詢按鈕}
    except
      MessageDlg('Connect Error', mtError, [mbYes], 0);
    end;
  end;
end;

3. 執行 SQL 按鈕

procedure TForm1.ButtonGoClick(Sender: TObject);
begin
  with SQLClientDataSet do begin
    Close;
    CommandText := ESQL.Text; {如: SELECT * FROM users}
    Open;
  end;
end;

4. 表單關閉:釋放連接

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SQLConnection.Close;
end;

完整單元代碼

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBXpress, DB, SqlExpr, StdCtrls, ComCtrls, FMTBcd, Grids,
  DBGrids, Provider, DBClient, DBLocal, DBLocalS, DBTables;

type
  TForm1 = class(TForm)
    SQLConnection: TSQLConnection;
    StatusBar1: TStatusBar;
    Label1: TLabel;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Password: TEdit;
    User_Name: TEdit;
    HostName: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    GroupBox2: TGroupBox;
    Label5: TLabel;
    ESQL: TEdit;
    Label6: TLabel;
    Database: TEdit;
    ButtonGo: TButton;
    SQLClientDataSet: TSQLClientDataSet;
    procedure Button1Click(Sender: TObject);
    procedure ButtonGoClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ ... 以上事件處理代碼 ... }

end.

常見問題與優化

Q: 連接報「Driver not found」
A: 檢查 dbxdrivers.ini / dbxconnections.ini 是否正確註冊 MySQL 驅動;確認 libmysql.dll 版本與 MySQL 服務器兼容。
Q: 中文亂碼
A: 連接參數加入 Charset=utf8(或 utf8mb4),確保資料庫、表、欄位編碼一致。
Q: 大量資料效能
A: TSQLClientDataSet 會將所有記錄載入記憶體,大數據集建議使用 TSQLQuery + TDataSetProvider + TClientDataSet 分頁加載。
Q: 連接池
A: DBExpress 本身不提供連接池,中間層架構(DataSnap/RemObjects)通常由應用服務器管理連接池。

總結

DBExpress 提供輕量級的 MySQL 連接方案,配合動態參數設置與 TSQLClientDataSet,可快速構建「連接 → 查詢 → 顯示」的典型資料庫應用原型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
元件角色
TSQLConnection管理資料庫連接,保存驅動程式與連接參數
TSQLClientDataSet客戶端資料集,緩存查詢結果,支援離線編輯
TDataSource連結資料集與資料感知控件(如 DBGrid)
TDBGrid表格形式顯示/編輯資料