一個(gè)程序連接數(shù)據(jù)庫中間就需要有一個(gè)數(shù)據(jù)庫連接引擎
筆者在使用Delphi的過程中,共使用過幾種連接方式連接Access,SqlServer,Oracle,IBM UDB,IBM AS/400...
1.BDE
這是使用Delphi最多的一種方式,建立一個(gè)BDE別名可以在控制面板中的BDE Administration中添加,不過我習(xí)慣在SQL Explorer中建立,因?yàn)榻⒅笾苯涌梢詧?zhí)行建表的腳本了。
你可以在SQL Explorer中左邊的別名列表中點(diǎn)擊右鍵,并選擇要連接的數(shù)據(jù)庫種類,并在之后BDE建立的連接參數(shù)中填入必要的信息,注意,當(dāng)你選擇不同的數(shù)據(jù)庫時(shí),右邊的參數(shù)有少許的不同,這些參數(shù)的不同是由于不同數(shù)據(jù)庫所要求的參數(shù)不同造成的,例如SqlServer需要輸入服務(wù)器的名稱,數(shù)據(jù)庫的名稱。
BDE能夠連接我所使用過的所有的數(shù)據(jù)庫,當(dāng)然有些是通過ODBC來連接的。
在發(fā)布程序時(shí),必須發(fā)布BDE引擎。用InstallShield Express可以很方便的做這件事情
BDE的別名也可以在Delphi程序中動(dòng)態(tài)的檢查有無并建立之。我通常用TSession組件來Do It。
2.ODBC
這是Ms的產(chǎn)品。
如果你在ODBC中建立了一個(gè)DSN連接,那么你的Delphi程序還是需要使用BDE來連接它,但是此時(shí)不需要用上一步中的手動(dòng)建立別名,BDE會(huì)將ODBC中的所有別名自動(dòng)在BDE中建立相同名稱的別名,并且它是刪不掉的,除非你刪掉ODBC的DSN。
這種方式的實(shí)際是程序通過BDE,再通過ODBC,才連接到數(shù)據(jù)庫。
在早期使用Aceess時(shí),我通常使用這種方式。因?yàn)槟菚r(shí)候還沒有ADO。
同樣在使用IBM UDB時(shí),我也用這種方式,因?yàn)樵谑褂肂DE直接連接時(shí),在SQL Explorer中將不能枚舉數(shù)據(jù)庫中的表,而ODBC可以。
AS/400也可以使用這種方式來連接...
大型關(guān)系型數(shù)據(jù)庫都提供ODBC驅(qū)動(dòng)。在建立ODBC源時(shí),都會(huì)調(diào)用其本身的配置,不同的數(shù)據(jù)庫也是不同的。
ODBC源也可以在程序用代碼寫入注冊(cè)表中,來生成一個(gè)DSN.
3.ADO
這是ODBC的升級(jí)版本,通常也叫做mdac ,我用過的最新版本是2.7,現(xiàn)在應(yīng)該更高。在使用ms的數(shù)據(jù)庫SqlServer,Access時(shí),推薦使用這個(gè)東西,因?yàn)樗麖膚in98開始就集成在操作系統(tǒng)中,并且以連接字符串的形式提供所有參數(shù),發(fā)布系統(tǒng)時(shí)不需要在程序之外做其他的工作。
它也提供包括一些類數(shù)據(jù)庫的連接,例如Excel。
值得一提的是在連接有密碼的Access時(shí),Delphi的Ado向?qū)傻倪B接字符傳是有Bug的,其生成的password子項(xiàng)是password='xxx';這個(gè)樣子,但是這將不能連接,手動(dòng)將其改成Jet Oledb password='xxx';(好像是這樣,記不清了).
4.DbExpress
這是Borland提供的最新的數(shù)據(jù)庫引擎,目前提供的驅(qū)動(dòng)有限,我只用它成功測試過IBM UDB,在網(wǎng)上可以找到第3方的連接AS/400的驅(qū)動(dòng)。
它是一個(gè)提供單向游標(biāo)的引擎,Borland稱相對(duì)于BDE,具有更高的效率。并且在以后將發(fā)展它,而停止BDE的更新。
通常在使用這種方式時(shí),應(yīng)該用DataSnap(以前叫Midas)技術(shù)來提供雙向游標(biāo)的應(yīng)用,并且用TClientDataset的Data,Delta屬性來靈活的序列化Dataset,而實(shí)現(xiàn)多層松耦合系統(tǒng)。
5.第3方的驅(qū)動(dòng)
這些我一個(gè)都沒在實(shí)際 中使用過,通常以組件的形式提供,我所知的如連接Oracle的Odac,連接As/400的Delphi400。。。
最后現(xiàn)在如果可能,應(yīng)盡量使用ADO來連接系統(tǒng),并且用DataSnap來操作本地?cái)?shù)據(jù)集來實(shí)現(xiàn)多層系統(tǒng)。
更多信息請(qǐng)查看IT技術(shù)專欄