ADO.NET还是比较常用的,于是我研究了一下ADO.NET DataReader,在这里拿出来和大家分享一下,希望对大家有用。ADO.NET向编写托管代码的开发人员提供类似于 ActiveX 数据对象 (ADO) 向本机组件对象模型 (COM) 开发人员提供的功能。建议您在 .NET 应用程序中使用 ADO.NET 而不使用 ADO 来访问数据。如果返回的是多个结果集,ADO.NET DataReader会提供NextResult方法来按顺序循环访问这些结果集。以下示例显示SqlDataReader如何使用ExecuteReader方法处理两个SELECT语句的结果。
从DataReader中获取架构信息
#T#当ADO.NET DataReader打开时,可以使用GetSchemaTable方法检索有关当前结果集的架构信息。GetSchemaTable将返回一个填充了行和列的DataTable对象,这些行和列包含当前结果集的架构信息。对于结果集的每一列,DataTable都包含一行。架构表行的每一列都映射到在结果集中返回的列的属性,其中ColumnName是属性的名称,而列的值为属性的值。以下代码示例为DataReader编写架构信息。
VisualBasic
- PrivateSubGetSchemaInfo(ByValconnectionAsSqlConnection)
- Usingconnection
- DimcommandAsSqlCommand=NewSqlCommand(_
- "SELECTCategoryID,CategoryNameFROMCategories;",_
- connection)
- connection.Open()
- DimreaderAsSqlDataReader=command.ExecuteReader()
- DimschemaTableAsDataTable=reader.GetSchemaTable()
- DimrowAsDataRow
- DimcolumnAsDataColumn
- ForEachrowInschemaTable.Rows
- ForEachcolumnInschemaTable.Columns
- Console.WriteLine(String.Format("{0}={1}",_
- column.ColumnName,row(column)))
- Next
- Console.WriteLine()
- Next
- reader.Close()
- EndUsing
- EndSub
C#
- staticvoidGetSchemaInfo(SqlConnectionconnection)
- {
- using(connection)
- {
- SqlCommandcommand=newSqlCommand(
- "SELECTCategoryID,CategoryNameFROMCategories;",
- connection);
- connection.Open();
- SqlDataReaderreader=command.ExecuteReader();
- DataTableschemaTable=reader.GetSchemaTable();
- foreach(DataRowrowinschemaTable.Rows)
- {
- foreach(DataColumncolumninschemaTable.Columns)
- {
- Console.WriteLine(String.Format("{0}={1}",
- column.ColumnName,row[column]));
- }
- }
- }