簡(jiǎn)單解決ADO.NET NextResult檢索多個(gè)結(jié)果集
我們往往為了取大量的結(jié)果集而煩惱,這里就利用ADO.NET NextResult檢索多個(gè)結(jié)果集做出詳細(xì)的介紹。為大家解除煩惱。ADO.NET提供對(duì)諸如 SQL Server 和 XML 這樣的數(shù)據(jù)源以及通過(guò) OLE DB 和 ODBC 公開(kāi)的數(shù)據(jù)源的一致訪(fǎng)問(wèn)。共享數(shù)據(jù)的使用方應(yīng)用程序可以使用 ADO.NET 連接到這些數(shù)據(jù)源,并可以檢索、處理和更新其中包含的數(shù)據(jù)。
#T#ADO.NET通過(guò)數(shù)據(jù)處理將數(shù)據(jù)訪(fǎng)問(wèn)分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET 包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的 .NET Framework 數(shù)據(jù)提供程序。這些結(jié)果或者被直接處理,放在 ADO.NET DataSet 對(duì)象中以便以特別的方式向用戶(hù)公開(kāi),并與來(lái)自多個(gè)源的數(shù)據(jù)組合;或者在層之間傳遞。DataSet 對(duì)象也可以獨(dú)立于 .NET Framework 數(shù)據(jù)提供程序,用于管理應(yīng)用程序本地的數(shù)據(jù)或源自 XML 的數(shù)據(jù)。ADO.NET 類(lèi)位于 System.Data.dll 中,并與 System.Xml.dll 中的 XML 類(lèi)集成。
ADO.NET向編寫(xiě)托管代碼的開(kāi)發(fā)人員提供類(lèi)似于 ActiveX 數(shù)據(jù)對(duì)象 (ADO) 向本機(jī)組件對(duì)象模型 (COM) 開(kāi)發(fā)人員提供的功能。建議您在 .NET 應(yīng)用程序中使用 ADO.NET 而不使用 ADO 來(lái)訪(fǎng)問(wèn)數(shù)據(jù)。如果返回的是多個(gè)結(jié)果集,DataReader會(huì)提供NextResult方法來(lái)按順序循環(huán)訪(fǎng)問(wèn)這些結(jié)果集。以下示例顯示SqlDataReader如何使用ExecuteReader方法處理兩個(gè)SELECT語(yǔ)句的結(jié)果。
ADO.NET NextResult檢索多個(gè)結(jié)果集VisualBasic
- PrivateSubRetrieveMultipleResults(ByValconnectionAsSqlConnection)
- Usingconnection
- DimcommandAsSqlCommand=NewSqlCommand(_
- "SELECTCategoryID,CategoryNameFROMCategories;"&_
- "SELECTEmployeeID,LastNameFROMEmployees",connection)
- connection.Open()
- DimreaderAsSqlDataReader=command.ExecuteReader()
- DoWhilereader.HasRows
- Console.WriteLine(vbTab&reader.GetName(0)_
- &vbTab&reader.GetName(1))
- DoWhilereader.Read()
- Console.WriteLine(vbTab&reader.GetInt32(0)_
- &vbTab&reader.GetString(1))
- Loop
- reader.NextResult()
- Loop
- EndUsing
- EndSub
ADO.NET NextResult檢索多個(gè)結(jié)果集C#
- staticvoidRetrieveMultipleResults(SqlConnectionconnection)
- {
- using(connection)
- {
- SqlCommandcommand=newSqlCommand(
- "SELECTCategoryID,CategoryNameFROMdbo.Categories;"+
- "SELECTEmployeeID,LastNameFROMdbo.Employees",
- connection);
- connection.Open();
- SqlDataReaderreader=command.ExecuteReader();
- while(reader.HasRows)
- {
- Console.WriteLine("\t{0}\t{1}",reader.GetName(0),
- reader.GetName(1));
- while(reader.Read())
- {
- Console.WriteLine("\t{0}\t{1}",reader.GetInt32(0),
- reader.GetString(1));
- }
- reader.NextResult();
- }
- }
- }