如何從ADO.NET DataReader中獲取架構(gòu)信息
ADO.NET還是比較常用的,于是我研究了一下ADO.NET DataReader,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。ADO.NET向編寫(xiě)托管代碼的開(kāi)發(fā)人員提供類似于 ActiveX 數(shù)據(jù)對(duì)象 (ADO) 向本機(jī)組件對(duì)象模型 (COM) 開(kāi)發(fā)人員提供的功能。建議您在 .NET 應(yīng)用程序中使用 ADO.NET 而不使用 ADO 來(lái)訪問(wèn)數(shù)據(jù)。如果返回的是多個(gè)結(jié)果集,ADO.NET DataReader會(huì)提供NextResult方法來(lái)按順序循環(huán)訪問(wèn)這些結(jié)果集。以下示例顯示SqlDataReader如何使用ExecuteReader方法處理兩個(gè)SELECT語(yǔ)句的結(jié)果。
從DataReader中獲取架構(gòu)信息
#T#當(dāng)ADO.NET DataReader打開(kāi)時(shí),可以使用GetSchemaTable方法檢索有關(guān)當(dāng)前結(jié)果集的架構(gòu)信息。GetSchemaTable將返回一個(gè)填充了行和列的DataTable對(duì)象,這些行和列包含當(dāng)前結(jié)果集的架構(gòu)信息。對(duì)于結(jié)果集的每一列,DataTable都包含一行。架構(gòu)表行的每一列都映射到在結(jié)果集中返回的列的屬性,其中ColumnName是屬性的名稱,而列的值為屬性的值。以下代碼示例為DataReader編寫(xiě)架構(gòu)信息。
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]));
 - }
 - }
 - }
 















 
 
 
 
 
 
 