Delphi 3.0 對存取資料庫提供了強有力的支持, 利用Delphi 3.0 可以開發出強大的資料庫應用程式。
---- Delphi 的視覺化功能相當強大, 製作一個簡單的僅對資料進行檢視和維護的程式十分容易, 可以不寫任何程式碼就能實現! Delphi 3.0 中存取資料庫的方式有三種: 直接訪問, 如訪問Paradox 和DBase 資料庫; 透過ODBC 訪問, 如訪問access、FoXPRo 等資料庫; 透過內嵌(Native) 方式存取資料庫, 如存取SQL Server、Oracle、DB2等。 在Delphi 中, 可以使用Table 控製或/ 和Query 控制項來存取資料庫, 二者的設定和用法都差不多, 因此以下僅以Table 控制項為例說明這三種方式的特性和用法。
---- 1. 直接訪問
---- Delphi 可以直接存取Paradox 和DBase 這兩個桌面型的資料庫系統。 存取這兩種類型的資料庫時不需要特別的設置, 只需要把檔案路徑賦給Table 控制項的屬性DatabaseName 就可以存取該路徑下的資料庫了。 當然, 也可以事先建立映射資料庫路徑的資料庫別名, 然後把Table 控制項的DatabaseName 屬性設定為對應的資料庫別名。
---- 2. 透過ODBC 訪問
---- 存取Paradox 和DBase 以外的資料庫, 通常是透過ODBC 來實現的。 Delphi 可以存取支援ODBC 的資料庫系統, 如Access、SQL Server 和Oracle 等。 當然, 透過ODBC 存取資料庫時, 首先要使用Windows 的控制面板或Delphi 的資料庫引擎(BDE) 建立ODBC 資料來源。
---- Delphi 提供了Database 控件, 此控件的作用有: 在應用程式的控制下和資料庫系統建立連線、 進行交易處理等。 在資料庫應用程式中, 可以使用Database 控件, 也可以不使用。 如果不使用Database 控件, 可以直接把ODBC 資料來源的名稱賦給Table 控制項的屬性DatabaseName 而達到存取該資料庫的目的。 這種方式的弊端是在程式運行時由Delphi 系統自動彈出登入資料庫的英文介面的窗口, 既不美觀又不便於控制。 因此, 作者建議在資料庫應用程式中使用Database 控制項來登入資料庫系統。 把Table 控制項與Database 控制項關聯的方法是把其DatabaseName 屬性值指定為Database 控制項的DatabaseName 屬性值。 一個Database 控制項可以管理若干個Table 控制項。 和Database 控制項建立關聯以後, 只要該Database 控制項已經和資料庫建立了連接,Table 控制項就可以直接存取資料庫而無須再次登入。
---- 3. 透過內嵌方式存取
---- Delphi 中可以不透過ODBC, 而以內嵌方式存取SQL Server、Oracle、DB2 等資料庫系統。 這需要使用資料庫別名來指定資料庫, 資料庫別名可以事先建立, 也可以在程式執行時動態建立。 前者稱為靜態別名, 後者稱為動態別名。 使用資料庫別名來存取資料庫的方法和使用ODBC 資料來源的情形相同, 這裡不再累述。 透過內嵌方式存取資料庫的靜態別名必須在BDE 中建立。 以存取SQL Server 資料庫為例, 建立別名時必須指定資料庫伺服器的名稱(SERVER NAME)、 主機名稱(HOST NAME) 以及要存取的資料庫名稱(DATABASE NAME), 可以指定登入使用者名稱(USER NAME) 和口令(PASSWord) 等。 透過動態建立的別名來存取資料庫必須使用Database 控制項。
---- 結論
---- 以內嵌方式存取資料庫與透過ODBC 存取資料庫相比, 前者的速度要快一些。 而且, 內嵌方式可以在程式中動態地設定連接資料庫所需的參數, 使用者不必設定ODBC 資料來源, 這就降低了對使用者技術等級的要求, 並且減少了使用者的工作量。 從系統配置的難易和複雜程度來看, 使用內嵌方式開發的資料庫應用系統更方便一般使用者使用。 因此, 筆者建議在開發較大型的應用系統時, 最好透過內嵌方式來存取資料庫。