我们往往为了取大量的结果集而烦恼,这里就利用ADO.NET NextResult检索多个结果集做出详细的介绍。为大家解除烦恼。ADO.NET提供对诸如 SQL Server 和 XML 这样的数据源以及通过 OLE DB 和 ODBC 公开的数据源的一致访问。共享数据的使用方应用程序可以使用 ADO.NET 连接到这些数据源,并可以检索、处理和更新其中包含的数据。
#T#ADO.NET通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET 包含用于连接到数据库、执行命令和检索结果的 .NET Framework 数据提供程序。这些结果或者被直接处理,放在 ADO.NET DataSet 对象中以便以特别的方式向用户公开,并与来自多个源的数据组合;或者在层之间传递。DataSet 对象也可以独立于 .NET Framework 数据提供程序,用于管理应用程序本地的数据或源自 XML 的数据。ADO.NET 类位于 System.Data.dll 中,并与 System.Xml.dll 中的 XML 类集成。
ADO.NET向编写托管代码的开发人员提供类似于 ActiveX 数据对象 (ADO) 向本机组件对象模型 (COM) 开发人员提供的功能。建议您在 .NET 应用程序中使用 ADO.NET 而不使用 ADO 来访问数据。如果返回的是多个结果集,DataReader会提供NextResult方法来按顺序循环访问这些结果集。以下示例显示SqlDataReader如何使用ExecuteReader方法处理两个SELECT语句的结果。
ADO.NET NextResult检索多个结果集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检索多个结果集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();
- }
- }
- }