您目前已離線,請等候您的網際網路重新連線

如何擷取資料行結構描述,使用 DataReader GetSchemaTable 方法和視覺化 C#。NET

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:310107
對於 Microsoft Visual Basic。NET 版本這樣文件編號,請參閱 310108.
對於 Microsoft Visual c + +.NET 這份文件的版本,請參閱 309683.

這份文件的參考到下列的 Microsoft。NET Framework 類別庫命名空間:
  • System.Data.OleDb

在這項工作

結論
本文將示範如何使用 ado DataReader物件的GetSchemaTable方法。NET 中擷取資料行的結構描述資訊。另一個資料行的結構描述名稱是其欄位屬性。資料行的結構描述資訊包含資料行的下列資訊:
  • 名稱
  • 資料型別
  • 大小
  • 資料行是否是主索引鍵欄位
  • 資料行是否是 [自動編號] (自動增量)欄位
GetSchemaTable方法會傳回包含DataReader的資料行結構描述的資料表屬性。資料表包含每個欄位中的結果集的一個資料列。每個資料行對應至結果集欄位的屬性。資料表資料行的ColumnName屬性是屬性的欄位,例如ColumnName資料型別ColumnSizeIsKeyColumnIsAutoIncrement屬性的名稱。資料表資料行的值是屬性的欄位,例如名字] 欄位值的ColumnName屬性的值。
附註若要取得主索引鍵資訊,包括是否為一個欄位主索引鍵的一部份,以及它是否自動累加欄位,您就必須設定DataReaderCommandBehavior值為CommandBehavior.KeyInfo

您可以使用GetSchemaTable方法以其中一個 OLE DB。NET 提供者或 SQL。NET提供者。OleDbDataReader.GetSchemaTable方法會將對應至 OLE DB IColumnsRowset::GetColumnsRowset方法。SqlDataReader.GetSchemaTable方法並不會使用 OLE DB 提供者層。

附註,除非您明確地使用GetSchemaTable方法,否則DataReader才會傳回資料行結構描述。此外,如果您使用GetSchemaTable來擷取資料行結構描述時,您無法更新DataReaderDataReader固定會擷取資料的唯讀、 順向的資料流資料庫。

back to the top

若要使用 GetSchemaTable 方法的時機

  • SqlConnection物件不支援擷取 SQL Server 結構描述資訊在類似於OleDbConnection物件的GetOleDbSchemaTable方法的方法。類別的GetSchemaTable方法提供最直接的方式來取得資料行結構描述從 SQL Server 的資訊。
  • 雖然OleDbConnection物件的GetOleDbSchemaTable方法會傳回資料庫、 資料表和資料行的結構描述資訊,您會發現DataReader物件的GetSchemaTable方法會更容易使用,如果您想要擷取只有資料行結構描述資訊。
  • 您可以使用GetSchemaTable方法來建立新資料表時您自訂的資料行名稱和其他依據現有資料表屬性之結構描述資料行屬性。如範例程式碼會示範如何使用GetSchemaTable來定義新的資料表,請參閱 「 Visual Studio 範例: Fitch和 Mather 7.0 執行 SQL 查詢"Microsoft Visual Studio 中的主題。NET 線上說明文件。
back to the top

擷取以 OLE DB 的資料行結構描述。NET 提供者

這個範例會列出的資料行 (欄位的結構描述資訊屬性) 的 SQL Server 北風的 [員工] 資料表資料庫。

請注意,當您使用 OLE DB。NET 提供者使用OleDbDataReader物件的GetSchemaTable方法。
  1. 啟動 Visual Studio。NET,並建立新 Visual C#主控台應用程式專案。Class1.cs 會建立根據預設值。
  2. 開啟 Class1 的程式碼] 視窗。貼上下列程式碼在命名空間宣告上方的 [程式碼] 視窗的頂端:
    using System.Data;using System.Data.OleDb;					
  3. 在 [程式碼] 視窗中貼上下列程式碼,在Main函式:
    OleDbConnection cn = new OleDbConnection();OleDbCommand cmd = new OleDbCommand();DataTable schemaTable; OleDbDataReader myReader; 			 //Open a connection to the SQL Server Northwind database.cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;                       Password=password;Initial Catalog=Northwind";cn.Open();//Retrieve records from the Employees table into a DataReader.cmd.Connection = cn;cmd.CommandText = "SELECT * FROM Employees";myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo); //Retrieve column schema into a DataTable.schemaTable = myReader.GetSchemaTable();//For each field in the table...foreach (DataRow myField in schemaTable.Rows){    //For each property of the field...    foreach (DataColumn myProperty in schemaTable.Columns) {	//Display the field name and value.	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());    }    Console.WriteLine();    //Pause.    Console.ReadLine();}//Always close the DataReader and connection.myReader.Close();cn.Close();					
  4. 修改連接字串屬性,以便正確地連線到您的 SQL Server 的參數電腦。
  5. 按下 F5 鍵以編譯並執行專案。請注意每個欄位的內容會列出 [主控台] 視窗中。
  6. 按 ENTER 鍵來捲動清單、 結束主控台應用程式,並傳回整合式開發環境(IDE)。
back to the top

擷取具有 SQL 的資料行結構描述。NET 提供者

這個範例會列出的資料行 (欄位的結構描述資訊屬性) 的 SQL Server 北風的 [員工] 資料表資料庫。

請注意,當您使用 SQL。NET 提供者,您可以使用GetSchemaTable物件方法。
  1. 啟動 Visual Studio。NET,並建立新 Visual C#主控台應用程式專案。Class1.cs 會建立根據預設值。
  2. 開啟 Class1 的程式碼] 視窗。貼上下列程式碼在命名空間宣告上方的 [程式碼] 視窗的頂端:
    using System.Data;using System.Data.SqlClient;					
  3. 在 [程式碼] 視窗中貼上下列程式碼,在Main函式:
    SqlConnection cn = new SqlConnection();SqlCommand cmd = new SqlCommand();DataTable schemaTable; SqlDataReader myReader; 			 //Open a connection to the SQL Server Northwind database.cn.ConnectionString = "Data Source=server;User ID=login;                       Password=password;Initial Catalog=Northwind";cn.Open();//Retrieve records from the Employees table into a DataReader.cmd.Connection = cn;cmd.CommandText = "SELECT * FROM Employees";myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);//Retrieve column schema into a DataTable.schemaTable = myReader.GetSchemaTable();//For each field in the table...foreach (DataRow myField in schemaTable.Rows){    //For each property of the field...    foreach (DataColumn myProperty in schemaTable.Columns) {	//Display the field name and value.	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());    }    Console.WriteLine();    //Pause.    Console.ReadLine();}//Always close the DataReader and connection.myReader.Close();cn.Close();					
  4. 修改連接字串屬性,以便正確地連線到您的 SQL Server 的參數電腦。
  5. 按下 F5 以編譯並執行專案。請注意,每個欄位的屬性會列在 [主控台] 視窗中。
  6. 按 ENTER 鍵來捲動清單、 結束主控台應用程式,並返回 IDE。
back to the top
参考
如需有關DataReaderGetSchemaTable方法的詳細資訊,請參閱 Visual Studio 中的下列主題。NET 線上說明] 文件: 如需有關使用OleDbConnection物件的GetOleDbSchemaTable方法來擷取結構描述資訊的詳細資訊,請按一下文件編號下面,檢視 「 Microsoft 知識庫 」 中:
309681 如何使用 GetOleDbSchemaTable 和視覺化 C# 擷取結構描述資訊。NET
back to the top

警告:本文為自動翻譯

內容

文章識別碼:310107 - 最後檢閱時間:06/12/2012 06:21:00 - 修訂: 1.0

Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2003 標準版, Microsoft Visual C# .NET 2002 Standard Edition

  • kbdatabase kbhowtomaster kbsqlclient kbsystemdata kbmt KB310107 KbMtzh
意見反應