大致說明ADODataset的結構進行學習切磋
ADO DataSet的結構允許基于查詢返回的結果創建Recordset。數據訪問引擎會檢查結果集中的數據列,并根據該信息填充Recordset對象的Fields集合,設置名稱、數據類型等。下面進行相關說明。
可以使用少數代碼行,讓ADO.NET自動檢查結果的結構;也可以使用較多代碼,其中包含了有關查詢結果結構的元數據。
那么為什么要選擇需要編寫較多代碼的選項呢?最主要的優點就在于其功能性更強、性能更佳。但是代碼較多時又怎么會使應用程序的運行速度更快呢?這似乎有悖于人們的直覺感受,不是嗎?
除非您正編寫一個專用查詢工具,否則您通常事先就知道查詢結果的結構形式。例如,大多數ADO DataSet的結構形式都與下例相似。Dim rs as Recordset'在此處聲明其他變量…初始化變量并與數據庫建立連接:
- rs.Open strSQL, cnDatabase, adOpenStatic, adLockOptimistic, adCmdText
- Do While Not rs.EOF
- List1.AddItem rs.Fields("UserName").Value
- rs.MoveNext
- Loop
在此代碼段中,編程人員知道該查詢包含一個名為UserName的列。關鍵就在于一個開發人員通常都知道查詢會返回哪些列,以及這些列使用何種數據類型。但是ADO并不能事先了解查詢結果的形式。結果,ADO必須對OLE DB提供程序進行查詢,提出諸如“查詢的結果中有多少列?
”,“這些列中每一列的數據類型是什么?”,“這些數據來自何方?”和“該查詢中所引用的每個表的主鍵字段是什么?”等問題。OLE DB提供程序可以回答這些問題中的一部分,但是很多時候它都必須回調數據庫。#t#
為獲取查詢結果,并且將該數據存儲在DataSet對象中,ADO DataSet的結構需要知道此類問題的答案。您可以自己提供這些信息,也可以強制ADO.NET從提供程序獲取信息。當選擇自己提供信息時,代碼的運行速度就能加快,這是因為:與通過代碼提供元數據相比,在運行時向提供程序詢問此信息會使性能大幅降低。
盡管通過編寫代碼來準備ADO DataSet的結構可以提高應用程序的性能,但編寫代碼可能非常沉悶乏味。幸運的是,Visual Studio包含了設計時數據訪問特性,這些特性為我們綜合了兩者***秀的性能。
例如,您可以創建一個基于查詢、表名稱或存儲過程的DataSet對象,然后配置向導就會生成ADO.NET代碼,來運行此查詢,并支持將更新提交給數據庫。在下面的章節中將會詳細討論許多此類Visual Studio特性。