如何設(shè)計(jì)ADO代碼操作解決方案
有許多種辦法可以連上一個(gè)數(shù)據(jù)庫. 你可以用System DSN, DSN-less連接或是本地的OLEDB providerADO代碼? 這是什么什么玩藝兒? 也許你們中的許多人以前沒有聽說過. 要回答這個(gè)問題,我們先得回顧一下數(shù)據(jù)庫連接的歷史。
期的數(shù)據(jù)庫連接是非常困難的. 每個(gè)數(shù)據(jù)庫的格式都不一樣,開發(fā)者得對(duì)他們所開發(fā)的每種數(shù)據(jù)庫的底層API有深刻的了解. 因此,能處理各種各樣數(shù)據(jù)庫的通用的API就應(yīng)運(yùn)而生了. 也就是現(xiàn)在的ODBC(Open Database Connectivity), ODBC是人們?cè)趧?chuàng)建通用API的早期產(chǎn)物. 有許多種數(shù)據(jù)庫遵從了這種標(biāo)準(zhǔn),被稱為ODBC兼容的數(shù)據(jù)庫. ODBC兼容的數(shù)據(jù)庫包括Access, MS-SQL Server, ADO代碼等.。#t#
ADO代碼并不是完美無缺的,它仍然含有大量的低級(jí)的調(diào)用,開發(fā)ODBC應(yīng)用程序仍較困難. 開發(fā)者不得不將大量的精力花在底層的數(shù)據(jù)庫通信中,而不能專注于他們所要處理的數(shù)據(jù). 后來微軟提出了一個(gè)解決方案: DAO(Data Access Objects). DAO的代碼看起來象這樣:
- objItem.AddNew
- objItem.Name = "Chair"
- objItem.Price = 10
- objItem.Update
你也許看過DAO的代碼. 后來DAO演變?yōu)镽DO(Remote Data Objects, 為分布式數(shù)據(jù)庫體系設(shè)計(jì)), 再后來是ADO. 盡管它們都有各自的不足之處. 根據(jù)微軟的說法,"ODBC提供了本地SQL數(shù)據(jù)的存取,DAO提供了高級(jí)的數(shù)據(jù)對(duì)象". ADO代碼都需要數(shù)據(jù)以SQL(Structured Query Language)的格式存儲(chǔ). 針對(duì)這些缺陷,微軟提出了OLEDB,一個(gè)基于COM的數(shù)據(jù)存儲(chǔ)對(duì)象,能提供對(duì)所有類型的數(shù)據(jù)的操作,甚至能在離線的情況下存取數(shù)據(jù)(比方說,你使用的是你的便攜機(jī),你可以毫不費(fèi)力地看到最后一次數(shù)據(jù)同步時(shí)的數(shù)據(jù)映像).
OLEDB位于ADO代碼層與應(yīng)用程序之間. 在你的ASP頁面里,ADO是位于OLEDB之上的"應(yīng)用程序". 你的ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理. 你可以直接連接到OLEDB層,如果你這么做了,你將看到服務(wù)器端游標(biāo)(recordset的缺省的游標(biāo),也是最常用的游標(biāo))性能的提升. 那我們?cè)撊绾沃苯舆B接到OLEDB呢?