【文章內(nèi)容簡(jiǎn)介】
ADO的穩(wěn)定性,并且讓 ADO 能夠存取更多種類的資料來源。 ADO 的由來必須從 Microsoft 數(shù)據(jù)存取技術(shù)發(fā)展的歷史說起。 1992 年 Microsoft 和 Sybase、 Digital 共同制定了 ODBC 標(biāo)準(zhǔn),以單一的 ODBC API 來存取各種不同的數(shù)據(jù)庫(kù)。隨后 ODBC 獲得了許多數(shù)據(jù)庫(kù)廠商和 ThirdParty 的支持而逐漸成為標(biāo)準(zhǔn)的數(shù)據(jù)存取技術(shù)。不過 ODBC僅支持關(guān)系數(shù)據(jù)庫(kù),以及傳統(tǒng)的數(shù)據(jù)庫(kù),并且只能夠以 C/C++語言 API 形式提供服務(wù),因而無法符合日 漸復(fù)雜的數(shù)據(jù)存取應(yīng)用,也無法讓稿本語言使用。 1993 年, Microsoft 為了能存取 Access 數(shù)據(jù)庫(kù),使用了 OLE Automation 技術(shù)封裝了 Jet Engine,被稱為 Data Access Object (DAO)。它可支持 xBase 的數(shù)據(jù)庫(kù)和 Excel 文件,并且能夠結(jié)合 ODBC 存取數(shù)據(jù)庫(kù)。它在存取 Access 數(shù)據(jù)庫(kù)時(shí)很有效率,但在存取其他數(shù)據(jù)庫(kù)時(shí)速度很慢。 由于 DAO 結(jié)合 ODBC 存取關(guān)系數(shù)據(jù)庫(kù)時(shí)效率不好,而 ODBC API 是非常復(fù)雜的 API,在1995 年 Microsoft 同樣以 OLE Automation 技術(shù)直接封裝 ODBC。這種技術(shù)就是 Remote Data Object( RDO)。通過 RDO, VB 和稿本語言也能夠存取各種關(guān)系數(shù)據(jù)庫(kù)。 但是隨著數(shù)據(jù)來源日益復(fù)雜,現(xiàn)在的應(yīng)用程序很可能需要從不同的數(shù)據(jù)源來區(qū)的數(shù)據(jù),加以處理,再把處理過的資料輸出到另一個(gè)數(shù)據(jù)來源中。更麻煩的是這些數(shù)據(jù)來源可能不是傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù),而很可能為 Excel 檔案, Email 等。 Microsoft 為了讓應(yīng)用程序能夠以統(tǒng)一的方式存取不同的數(shù)據(jù)源,在 1997 年提出 Universal Data Access 架構(gòu), UDA 是以 COM 技術(shù)為核心,以 OLEDB 作為技術(shù)的骨架,它是操作系統(tǒng)層次的軟件。 OLEDB 定義了統(tǒng)一的COM 界面作為存取各類數(shù)據(jù)源的標(biāo)準(zhǔn),并且封裝在一組 COM 物件中,通過 OLEDB,我們就可以使用統(tǒng)一的方式來存取各種數(shù)據(jù)。 但是由于 OLEDB 在使用上非常復(fù)雜,需要有較高的技巧才可以存取資料。為了解決這個(gè)問題,并且讓 VB 和稿本語言也能夠通過 OLEDB 存取各種數(shù)據(jù)來源。 Microsoft 同樣用 COM技術(shù)封裝了 OLEDB 成為 ADO 物件,并大幅度簡(jiǎn)化了數(shù)據(jù)的存取工作,有利于提高生產(chǎn)力,這也是我們選擇 ADO 作為數(shù)據(jù)存取技 術(shù)的原因。 下圖為 Microsoft 數(shù)據(jù)存取技術(shù)的架構(gòu)圖。 Application DAO RDO ADO OLE DB ODBC SQL Data SQL Server Oracle Other FoxPro Jet Non SQL Data Mail Server Directory Services Other Text Video Mainframe and Legacy Data 使用 Delphi 開發(fā) ADO 程序 Delphi 提供了 ADOExpress 元件組,適當(dāng)?shù)姆庋b了原生 ADO 技術(shù),并把原生的 ADO 物件融入 Delphi 的 VCL 架構(gòu)中。使得 Delphi 程序員能夠快速、高效的開發(fā) ADO 應(yīng)用程序。 MS SQL Server Microsoft SQL Server 7 是高性能、客戶 /服務(wù)器方式的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)( RDBMS: relational database management system)。 它經(jīng)過精心設(shè)計(jì),支持大吞吐量的事務(wù)處理(例如聯(lián)機(jī)訂單、庫(kù)存管理、會(huì)計(jì)賬目或商品生產(chǎn)等),也能支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)和決策支持的應(yīng)用程序(例如銷售分析應(yīng)用系統(tǒng)等)。 SQL Server 7 可以在基于 Microsoft Windows NT Server 網(wǎng)絡(luò)支持的任何硬件結(jié)構(gòu)環(huán)境中完好的運(yùn)行。另外還提供許多客戶工具和其他 Microsoft 操作系統(tǒng)的網(wǎng)絡(luò)接口。又因?yàn)?SQL Server的開發(fā)式結(jié)構(gòu),其它系統(tǒng)(如基于 UNIX 的系統(tǒng))也能夠與它進(jìn)行相互操作。它的工具和接口包括開發(fā)工具、系統(tǒng)管理工具、分布式系統(tǒng)組件以及開發(fā)式開 發(fā)接口。 SQL 引擎 Transact SQL SQL Server 引擎支持廣泛的應(yīng)用程序需求,如聯(lián)機(jī)事務(wù)處理和決策支持應(yīng)用程序。它的決策支持功能的核心部分是 Transact SQL。在這種查詢語言下面,是支持事務(wù)處理和可恢復(fù)性功能的組件。 Microsoft SQL Server 符合美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)的 SQL92 標(biāo)準(zhǔn)。由于 Microsoft SQL Server 對(duì) SQL92 作了獨(dú)特的擴(kuò)展,使得 Transact SQL 功能更加強(qiáng)大。 查詢優(yōu)化器。 在 TransactSQL 中,以節(jié)省系統(tǒng)開銷為目的的查詢優(yōu) 化器確定了訪問數(shù)據(jù)的最佳方法。它可以統(tǒng)計(jì)數(shù)據(jù)量和數(shù)據(jù)的離散趨勢(shì),然后可以利用這些統(tǒng)計(jì)結(jié)果估算出優(yōu)化操作。利用 SQL Server 的 SHOWPLAN 功能,可以解釋執(zhí)行計(jì)劃,提出選擇改執(zhí)行計(jì)劃的原因,還可以用來調(diào)整應(yīng)用程序和數(shù)據(jù)庫(kù)的設(shè)計(jì)。 可編程服務(wù)器 TransactSQL 提供編程結(jié)構(gòu),采用簡(jiǎn)單的 SQL 程序腳本,可以大大簡(jiǎn)化應(yīng)用程序的開發(fā)。這種結(jié)構(gòu)消除了網(wǎng)絡(luò)會(huì)話,因而可以顯著改善客戶 /服務(wù)器環(huán)境下的性能。 存儲(chǔ)過程 SQL Server 提供某些存儲(chǔ)過程,利用這些存儲(chǔ)過程,可以先將編譯后的 SQL 語句存進(jìn)服務(wù)器 。另外 SQL Server 還提供擴(kuò)展的存儲(chǔ)過程,可以讓開發(fā)人員擴(kuò)展 Transact SQL 提供的編程能力,也可以訪問 SQL Server 外部的資源。 強(qiáng)制性的數(shù)據(jù)完整性 SQL Server 在數(shù)據(jù)自身內(nèi)部強(qiáng)制性實(shí)施數(shù)據(jù)完整性,保證復(fù)雜的商業(yè)法規(guī)得以遵守,還要保證數(shù)據(jù)元素之間的強(qiáng)制性關(guān)系得以維持。 SQL Server 采用先進(jìn)的數(shù)據(jù)完整性功能。例如,存儲(chǔ)過程、說明性參照完整性、數(shù)據(jù)類型、約束、規(guī)則、默認(rèn)值以及觸發(fā)器。 事務(wù)處理 SQLServer 可以保證事務(wù)的原子性。有了原子性,每個(gè)事務(wù)就會(huì)被看成 “非此即彼 ”( allornothing)型的,即每個(gè)事務(wù)要么執(zhí)行,要么終止。如果一個(gè)事務(wù)已確認(rèn),那么所有其效果予以保留。如果一個(gè)事務(wù)被終止,那么所有其效果將被取消。 一致性 一直性屬性保證事務(wù)不允許系統(tǒng)輸入不正確的邏輯狀態(tài),即數(shù)據(jù)在邏輯上總應(yīng)該是正確的。約束和規(guī)則都忠實(shí)地進(jìn)行把關(guān),即使在系統(tǒng)失靈的情況下也是如此。 隔離性 事務(wù)之間的隔離性由 SQLS erver 自動(dòng)完成。 SQL Server 可以對(duì)數(shù)據(jù)加鎖,從而使多個(gè)并發(fā)用戶對(duì)數(shù)據(jù)進(jìn)行操作。 SQL Sever 可以阻止一些副作用。這些副作用可能歪曲結(jié)果 。 持久性 當(dāng)一個(gè)事務(wù)被確認(rèn)后, SQL Server 的持久性即可保證該事務(wù)的效果持續(xù)存在。即使系統(tǒng)失靈,其效果仍然保持。相反,如果在處理事務(wù)時(shí)系統(tǒng)失靈,那么事務(wù)將被完全取消,但對(duì)于數(shù)據(jù)則不會(huì)產(chǎn)生任何影響。 安全性 windows NT 驗(yàn)證功能依賴于 “信用連接 ”( trusted connections)。這其中要用到 Windows NT的模仿功能。通過模仿功能, SQL Server 可以利用 Windows NT 用戶帳號(hào)中的安全內(nèi)容來對(duì)連接進(jìn)行初始化,并檢測(cè)其中的安全標(biāo)識(shí)符 (SID)是否達(dá)到了合法授權(quán)級(jí)別。當(dāng) 連接到運(yùn)行Windows NT 下的 SQL Server 時(shí), Windows NT 的模仿功能和信用連接對(duì)所有的網(wǎng)絡(luò)接口(網(wǎng)庫(kù))都實(shí)用。 對(duì)于運(yùn)行在 Windows95 或 Wind