一個程式串連資料庫中間就需要有一個資料庫連接引擎
筆者在使用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來操作本機資料集來實現多層系統。