2023/12/01

Lazarus ZeosLib 7.2 轉換 Delphi 專案初體驗

作者:吳祐賓



Lazarus 發展到現在也很長的一段時間,雖然進度很慢,但 Lazarus 確實是存活著。作為 Delphi 7 替代品,也許它 -- Lazarus Free Pascal IDE 已經具備足夠的實力。

很奇怪的是,Lazarus 連結 MSSQL (SQL SERVER) 的資料是又少又零碎,和現在持續使用 Lazarus 的朋友請教後得到其連結法是:

  1. 使用 TMSSQLConnection 和 TSQLConnector 可以連結 MSSQL
  2. 必須搭配 TSQLTransaction 才能將異動資料寫回資料庫
  3. 需要有 DBLib 驅動程式 (32bit, 64bit) 才能連結資料庫

dbExpress 佈署到客戶端的即視感又回來了,這熟悉的感覺有點不妙。

記得 KTOP 蕭沖大俠曾經提過與其使用 Delphi 官方資料庫元件,不如直接採用 ZeosLib 這種開源專案會來得高效穩定。有想法,就來實際驗證看看。


什麼是 ZeosLib

ZeosLib 是一組資料庫元件,適用於MySQL、MariaDB、PostgreSQL、Interbase、Firebird、MS SQL Server、SAP Adaptive Server Enterprise 和Adaptive Server Anywhere(以前稱為Sybase)、Oracle 和SQLite for Delphi、FreePascal/Lazarus 和C++ Builder 。
--翻譯自 ZeosLib 官網
ZeosLib 也被稱為 ZeosDBO,現在穩定版本為 zeosdbo-7.2.14 版。ZeosLib 7.3 已改名版本為 8.x 版,8 多了 Transcation 元件,而且支援 OleDB 連線方式 (Windows 平台限定),只是目前仍在內部實驗中,建議使用 7.2.14 版本。元件如下表所示。

 




ZeosLib 連結 MSSQL 方式

首先,TZConnection.Protocol 設為 "ado",接著設定 TZConnection.Database 屬性,但設計模式下不會開啟 ConnectionString Builder Dialog (ZeosLib 8 開始加入),所以必須自己研究 ConnectionString 組合方式,這個網站有詳細的說明。如下圖所示。


其它的操作方式就和 Delphi 7 ADO 元件完全相同,使用 Lazarus 內建的 "Delphi Conversion",並將 ADO Type 指定以 ZeosLib Type 替換,之後就自動完成。

拿個小專案來轉換,使用者也沒感覺到太大的問題。


總結

雖然 Lazarus 的進展緩慢,但它確實存活並發展著。作為 Delphi 7 的替代品,Lazarus 在持續努力中展現出了足夠的實力。

在連結 MSSQL 資料庫方面,我理解到使用 TMSSQLConnection 和 TSQLConnector 可以成功連結 MSSQL,同時需要 TSQLTransaction 來確保異動資料能夠順利寫回資料庫。此外,安裝 32bit 和 64bit 的 DBLib 驅動程式是不可或缺的一步。

相較於 dbExpress 帶來的客戶端即視感,KTOP 蕭沖大俠的建議是采用 ZeosLib,這也讓我感到好奇。ZeosLib,或稱 ZeosDBO,是一組跨平台、跨開發工具的資料庫元件,支援多種資料庫,包括 MySQL、PostgreSQL、MS SQL Server 等。穩定版本 zeosdbo-7.2.14 已經在開發者中廣泛使用,而 ZeosLib 8.x 版本則帶來了更多新特性,例如 Transcation 元件和支援 OleDB 連線方式(僅限於 Windows 平台)。

在實際驗證中,我發現將 TZConnection 的 Protocol 設為 "ado",然後手動設定 TZConnection 的 Database 屬性,可以成功連結 MSSQL。儘管在設計模式下無法使用 ConnectionString Builder Dialog(ZeosLib 8 加入的新功能),但通過研究 ConnectionString 的組合方式,我能夠順利設定連線。

最後,透過 Lazarus 內建的 "Delphi Conversion" 工具,將 ADO 元件轉換為 ZeosLib Type,轉換小專案的過程相對順利,使用者幾乎感受不到太大的問題。

綜合而言,我見證了 Lazarus 的堅持與發展,還深入研究了 ZeosLib 作為一個強大的資料庫元件的表現。這樣的探索與實作,讓我更深刻地了解了 Lazarus 的價值與潛力。

和你分享


See also

 


沒有留言:

張貼留言