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