筆者在使用Delphi的過程中,共使用過幾種連接方式連接Access,SqlServer,Oracle,IBM UDB,IBM AS/400...
1.BDE
這是使用Delphi最多的一種方式,建立一個BDE別名可以在控制面板中的BDE Administration中添加,不過我習慣在SQL Explorer中建立,因為建立之後直接可以執行建表的腳本了。
你可以在SQL Explorer中左邊的別名列表中點擊右鍵,並選擇要連接的數據庫種類,並在之後BDE建立的連接參數中填入必要的信息,注意,當你選擇不同的數據庫時,右邊的參數有少許的不同,這些參數的不同是由於不同數據庫所要求的參數不同造成的,例如SqlServer需要輸入服務器的名稱,數據庫的名稱。
BDE能夠連接我所使用過的所有的數據庫,當然有些是通過ODBC來連接的。
在發布程序時,必須發布BDE引擎。用InstallShIEld Express可以很方便的做這件事情
BDE的別名也可以在Delphi程序中動態的檢查有無並建立之。我通常用TSession組件來Do It。
2.ODBC
這是Ms的產品。
如果你在ODBC中建立了一個DSN連接,那麼你的Delphi程序還是需要使用BDE來連接它,但是此時不需要用上一步中的手動建立別名,BDE會將ODBC中的所有別名自動在BDE中建立相同名稱的別名,並且它是刪不掉的,除非你刪掉ODBC的DSN。
這種方式的實際是程序通過BDE,再通過ODBC,才連接到數據庫。
在早期使用Aceess時,我通常使用這種方式。因為那時候還沒有ADO。
同樣在使用IBM UDB時,我也用這種方式,因為在使用BDE直接連接時,在SQL Explorer中將不能枚舉數據庫中的表,而ODBC可以。
AS/400也可以使用這種方式來連接...
大型關系型數據庫都提供ODBC驅動。在建立ODBC源時,都會調用其本身的配置,不同的數據庫也是不同的。
ODBC源也可以在程序用代碼寫入注冊表中,來生成一個DSN.
3.ADO
這是ODBC的升級版本,通常也叫做mdac ,我用過的最新版本是2.7,現在應該更高。在使用ms的數據庫SqlServer,Access時,推薦使用這個東西,因為他從win98開始就集成在操作系統中,並且以連接字符串的形式提供所有參數,發布系統時不需要在程序之外做其他的工作。
它也提供包括一些類數據庫的連接,例如Excel。
值得一提的是在連接有密碼的Access時,Delphi的Ado向導生成的連接字符傳是有Bug的,其生成的password子項是password='xxx';這個樣子,但是這將不能連接,手動將其改成Jet Oledb passWord='xxx';(好像是這樣,記不清了).
4.DbExpress
這是Borland提供的最新的數據庫引擎,目前提供的驅動有限,我只用它成功測試過IBM UDB,在網上可以找到第3方的連接AS/400的驅動。
它是一個提供單向游標的引擎,Borland稱相對於BDE,具有更高的效率。並且在以後將發展它,而停止BDE的更新。
通常在使用這種方式時,應該用DataSnap(以前叫Midas)技術來提供雙向游標的應用,並且用TClIEntDataset的Data,Delta屬性來靈活的序列化Dataset,而實現多層松耦合系統。
5.第3方的驅動
這些我一個都沒在實際 中使用過,通常以組件的形式提供,我所知的如連接Oracle的Odac,連接As/400的Delphi400。。。
最後現在如果可能,應盡量使用ADO來連接系統,並且用DataSnap來操作本地數據集來實現多層系統。