如何從ADO.NET DataReader中獲取架構信息
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]));
- }
- }
- }