探秘ADO數(shù)據(jù)庫訪問技術有關信息
學習ADO.NET時,你可能會遇到ADO.NET Access問題,這里將介紹ADO.NET Access問題的解決方法,在這里拿出來和大家分享一下。在示例程序中我們?nèi)圆捎迷瓗旖Y構,數(shù)據(jù)庫名Demo.mdb,庫內(nèi)表名DemoTable,表內(nèi)字段名為Name(姓名)和Age(年齡)的兩個字段,來構造示例程序操作所需的ADO.NET Access數(shù)據(jù)庫,這也和上兩篇文章的示例源碼中的庫結構相兼容。
下面讓我們看看ADO數(shù)據(jù)庫訪問技術使用的基本步驟及方法:
首先,要用#import語句來引用支持ADO的組件類型庫(*.tlb),其中類型庫可以作為可執(zhí)行程序(DLL、EXE等)的一部分被定位在其自身程序中的附屬資源里,如:被定位在msado15.dll的附屬資源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面語句來實現(xiàn):
其次,在程序初始過程中需要初始化組件,一般可以用CoInitialize(NULL);來實現(xiàn),這種方法在結束時要關閉初始化的COM,可以用下面語句CoUnInitialize();來實現(xiàn)。在MFC中還可以采用另一種方法來實現(xiàn)初始化COM,這種方法只需要一條語句便可以自動為我們實現(xiàn)初始化COM和結束時關閉COM的操作,語句如下所示: AfxOleInit();
接著,就可以直接使用ADO的操作了。我們經(jīng)常使用的只是前面用#import語句引用類型庫時,生成的包裝類.tlh中聲明的智能指針中的三個,它們分別是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分別對它們的使用方法進行介紹:
在ADO中,以上所有這些方式與不同類型的游標相對應 .在文中,你將會發(fā)現(xiàn),ADO.NET雖然與ADO不同,但它具備了ADO的所有功能.相對照來說,你的代碼將從實際的數(shù)據(jù)源及其物理存儲媒介和格式中抽取數(shù)據(jù).#t#
ADO.NET能夠使DataSet 和 DataReader 將數(shù)據(jù)從數(shù)據(jù)源中抽取出來.前者是記錄在內(nèi)存中的緩存,你可以從任意方向訪問并隨意作出修改. 后者是高度優(yōu)化的對象,在只讀紀錄集中以僅向前方式向前移動。注: DataSet 看起來象是靜態(tài)游標,但實際上,在.NET中,與ADO只讀游標相對應的是DataReader 對象.
在ADO.NET中,雖然對于服務器端的游標不提供任何支持,但這不意味著你就不能使用游標.實際上,你所需要做的步驟是在.NET中輸入ADO庫.你只需在references node上單擊右鍵,就可以在你自己的程序里運行本地ADO 對象.
但是我個人認為,在你想轉向.NET時,請慎重考慮. 首先,請務必完全輸入ADO, 這不會花費太多時間和精力,這是向.NET邁出的第一步,.但是,這僅僅是萬里長征的第一步而且也是通向.NET必須的一步. .NET的真正附加值是基于一個均勻的,持續(xù)穩(wěn)定的接口以及本地classes的廣為應用之上的.關于COM libraries是可以被支持的,合理的,但不被鼓勵的,因為它僅僅是個短期解決方案,或者是一個過渡步驟.