UniDAC是一個(gè)方便使用和高效的數(shù)據(jù)訪問(wèn)解決方案發(fā)揮作用的許多具體到每個(gè)服務(wù)器的功能,旨在幫助程序員開發(fā)更快和更清潔的數(shù)據(jù)庫(kù)應(yīng)用程序。UniDAC這樣的標(biāo)準(zhǔn)通用技術(shù)的dbExpress是一個(gè)完整的更換。
【的優(yōu)點(diǎn)】
1、非常完美的支持多數(shù)據(jù)庫(kù)的數(shù)據(jù)集套件。這一點(diǎn),ADO也支持多數(shù)據(jù)庫(kù),但ADO除了MSSQL驅(qū)動(dòng)之外,其他驅(qū)動(dòng)支持的非常差。就拿Oracle驅(qū)動(dòng)來(lái)說(shuō),在調(diào)用oracle復(fù)雜的存儲(chǔ)過(guò)程參數(shù),總是或多或少有些問(wèn)題;MSSQL企業(yè)管理器如果用了第三方驅(qū)動(dòng)(比如是oracle),在導(dǎo)入導(dǎo)出數(shù)據(jù)也尚存在問(wèn)題!更別提不是主流的IB數(shù)據(jù)庫(kù)驅(qū)動(dòng)。UniDAC支持Oracle、MSSQL、MYSQL、IB/FB、PostgreSQL。2、對(duì)三層特性支持非常好!也許你也會(huì)問(wèn),三層也是訪問(wèn)DB,ADO也支持???!但三層最好方式是無(wú)狀態(tài)方式,在高并發(fā)的處理中,一般不允許本地有數(shù)據(jù)集緩存。ADO沒(méi)有單向數(shù)據(jù)集特性,所有的數(shù)據(jù)下載到本地,不停的開辟內(nèi)存或釋放大內(nèi)存,對(duì)三層的內(nèi)存是一個(gè)極大考驗(yàn)。TUniQuery有一個(gè)UniDirectional屬性,支持單向速度,這點(diǎn)和DBX的想法不謀而合。況且,單向數(shù)據(jù)集特性速度非??欤谌龑又?,配合TDataSetProvider,中間件將其Data包發(fā)送到客戶端,速度無(wú)可比擬。ADO也有流或XML格式包,但無(wú)論是XML或流格式,數(shù)據(jù)包遠(yuǎn)比CDS的包大幾倍。CDS封包技術(shù)很好!
3、一些非常有用的屬性或方法。常言道,細(xì)微之處見體貼。UniDAC有一些過(guò)人的方法或?qū)傩?。比如,刷新單條記錄(RefreshRecord)、多表更新的屬性(UpdatingTable)、宏替換參數(shù)(Macros)、集成刪除/新增/修改/刷新/鎖定SQL語(yǔ)句、FetchRows,更讓人稱道的是引入了UpdateSQL組件。
在處理MSSQL新增后的自增字段,和ADO一樣可以直接自動(dòng)返回自增字段值,這一點(diǎn),BDE不能做到、DBX不能做到、ZEOSDB不能做到。更令人稱奇是,配合TUniUpdateSQL,還能自動(dòng)返回自增字段值。
TUniUpdateSQL是一個(gè)好東西,ADO缺少TUdateSQL運(yùn)作模式,默認(rèn)的更新機(jī)制是主鍵字段+已變化的字段做where條件。在一般情況下是沒(méi)問(wèn)題,但如果這個(gè)表沒(méi)有主鍵或where條件中的字段小數(shù)位很長(zhǎng)導(dǎo)致誤餐,就會(huì)產(chǎn)生更新找不到記錄。TUdateSQL可以保證這點(diǎn),運(yùn)作靈活又透明。
4、對(duì)oracle支持非常好。別的不說(shuō),光是一個(gè)oracle連接的Direct Mode,不用安裝oracle官方肥碩客戶端(網(wǎng)上也有精10M左右簡(jiǎn)版的客戶端),只要客戶機(jī)支持TCP/IP協(xié)議即可。如果用ADO連接Oracle,必須保證先安裝oracle客戶端,還要配置連接文件,一堆繁瑣事情。UniDAC對(duì)oracle支持的非常完美,和專業(yè)化的DOA差不多!
【使用方法】
UniDAC由于融合了多種數(shù)據(jù)庫(kù)連接,手動(dòng)安裝有點(diǎn)麻煩。雖然可以用Source目錄下的Make.BAT文件,稍改一下delphi不同版本的Bin路徑,但我等有點(diǎn)安裝delphi控件經(jīng)驗(yàn)的人,最喜歡直接用DPK文件去安裝。安裝步驟如下(以D7為參照):1、找到source\delphi7目錄,所有的DPK文件都在這里。
2、編譯DAC 運(yùn)行包,即dac70.dpk。
3、如果是D6或D7,編譯DAC GUI related package,即dacvcl70.dpk。
4、編譯DAC運(yùn)行包,即dcldac70.dpk。
5、如果是D6或D7,編譯unidacvcl70.dpk。
6、分別編譯驅(qū)動(dòng)包:PG/ORA/MSSQL/MYSQL/IB的驅(qū)動(dòng)包。
7、編譯安裝UniDAC設(shè)計(jì)包,即 dclunidac70.dpk。
需要注意的是,
1、UniDAC和ODBC的驅(qū)動(dòng)包有沖突。
2、UniProviders下的驅(qū)動(dòng)包INC文件,諸如IbDac.inc、Odac.inc等,默認(rèn)不是專業(yè)版,請(qǐng)?jiān)谶@些Inc文件中,添加一句 {$DEFINE UNIDACPRO},避免在運(yùn)行期中找不到一些特定的文件。
3、DPK文件中的Option似乎有問(wèn)題,最好是改為OutPut Directory改為空,輸出到delphi的默認(rèn)路徑(projects\BPL\),Unit OutPut Directory是指為".",輸出到當(dāng)前路徑下。
4、最后一點(diǎn)也是老生常談的一點(diǎn),別忘給IDE的library路徑添加UniDAC路徑,即Source的路徑。
XE2 對(duì)應(yīng) 160
還要把D:\Program Files\XEThirdVcl\UniDac50src\Lib\Delphi16\Win32 路徑也加進(jìn)去


































