DataReader の GetSchemaTable メソッドと Visual c# を使用して列スキーマを取得するには、方法NET

文書翻訳 文書翻訳
文書番号: 310107
この記事は、以前は次の ID で公開されていました: JP310107
すべて展開する | すべて折りたたむ

目次

概要

この資料は、ADO のDataReaderオブジェクトのGetSchemaTableメソッドを使用する方法を示します。NET 列スキーマ情報を取得します。他列のスキーマの名前は、そのフィールドのプロパティです。列スキーマ情報列に関する次の情報は次のとおりです。
  • 名前
  • データ型
  • サイズ
  • 列が主キーのフィールドかどう
  • 列がオート ナンバー型 (オートインクリメント) のかどうかフィールド
GetSchemaTableメソッドは、 DataReaderの列スキーマを含むDataTableプロパティを返します。DataTableには 1 つの行、結果セット内の各フィールドにはが含まれます。各列結果セット内のフィールドのプロパティにマップされます。DataTable列のColumnNameプロパティは、 ColumnNameデータ型ColumnSizeIsKeyColumnIsAutoIncrementプロパティなど、フィールドのプロパティの名前です。DataTable列の値は、 ColumnNameプロパティのFirstName値などのフィールドのプロパティの値です。
フィールドがあるかどうかなど、主キー情報を取得するのには主キーの一部とは、オートインクリメント ・フィールドかどうかは、 CommandBehavior.KeyInfoにはDataReaderCommandBehavior値を設定する必要があります。

GetSchemaTableメソッドは、か、OLE DB を使用できます。NET のプロバイダーや、SQL。NETプロバイダー。OleDbDataReader.GetSchemaTableメソッドは、OLE DB のIColumnsRowset::GetColumnsRowsetメソッドにマップします。SqlDataReader.GetSchemaTableメソッドは、OLE DB プロバイダーのレイヤーを使用しません。

メモ、明示的にGetSchemaTableメソッドを使用していない場合は、 DataReaderの列スキーマを返しません。また、 GetSchemaTableを使用して列スキーマを取得する場合は、 DataReaderを更新できません。DataReaderは常に読み取り専用、順方向専用のストリームからのデータを取得します。データベース。

GetSchemaTable メソッドを使用する場合

  • SqlConnectionオブジェクトが SQL Server のスキーマ情報の取得をサポートしていませんメソッドに、 OleDbConnectionオブジェクトのGetOleDbSchemaTableメソッドに似ています。GetSchemaTableメソッドのSqlDataReaderクラス列スキーマを取得する簡単な方法を提供します。SQL Server からの情報です。
  • データベース、テーブル、および列スキーマ情報、 OleDbConnectionオブジェクトのGetOleDbSchemaTableメソッドが返すことができますが、DataReaderオブジェクトのGetSchemaTableメソッドのみの列を取得する場合に使用する方が簡単であることがあります。スキーマの情報です。
  • GetSchemaTableメソッドを使用して、列名とその他のカスタマイズを既存のDataTableプロパティのスキーマに基づいて新しいDataTableを作成することができます。列の属性。GetSchemaTableを使用して新しいテーブルを定義する方法を説明するサンプル コードについては、「Visual Studio サンプル:: Fitch を参照してください。Mather 7.0 SQL クエリの実行」のトピックでは、Microsoft の Visual Studio。NET のオンラインヘルプします。

OLE DB での列のスキーマを取得します。NET のプロバイダー

このサンプル スキーマ情報 (フィールドの列を一覧表示されます。プロパティの [社員] テーブルで、SQL Server の Northwindデータベース。

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 に正常に接続するのには、 ConnectionStringプロパティのパラメーターを変更します。コンピューター。
  5. コンパイルし、プロジェクトを実行するのには、F5 キーを押します。通知各フィールドのプロパティが、コンソール ウィンドウに表示されること。
  6. 一覧をスクロールして、コンソールを終了するには、ENTER キーを押します。アプリケーションは、統合開発環境に戻る(IDE)。

列のスキーマに、SQL を取得します。NET のプロバイダー

このサンプル スキーマ情報 (フィールドの列を一覧表示されます。プロパティの [社員] テーブルで、SQL Server の Northwindデータベース。

SQL を使用すると次のことに注意してください。NET のプロバイダーは、 SqlDataReaderオブジェクトの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 に正常に接続するのには、 ConnectionStringプロパティのパラメーターを変更します。コンピューター。
  5. F5 キーを押してコンパイルし、プロジェクトを実行します。注意してください、各フィールドのプロパティがコンソール ウィンドウに一覧表示されます。
  6. 一覧をスクロールして、コンソールを終了するには、ENTER キーを押します。アプリケーションと、IDE に戻ります。

関連情報

DataReaderおよびGetSchemaTableメソッドの詳細については、以下のトピックでは、Visual Studio を参照してください。NET のオンラインヘルプ:
DataReader を使用してデータを取得しています。

IDataReader.GetSchemaTable メソッド

: このトピックには内の列の一覧が含まれています、返されるDataTableに追加します。

OleDbDataReader.GetSchemaTable メソッド

SqlDataReader.GetSchemaTable メソッド
OleDbConnectionオブジェクトのGetOleDbSchemaTableメソッドを使用してくださいスキーマ情報を取得する方法については、文書番号をクリックしてください。以下の「サポート技術情報」資料を参照するには。
309681 GetOleDbSchemaTable と Visual c# を使用してスキーマ情報を取得するには、方法を指定します。NET

プロパティ

文書番号: 310107 - 最終更新日: 2012年6月12日 - リビジョン: 1.0
キーワード:?
kbhowtomaster kbsqlclient kbsystemdata kbdatabase kbmt KB310107 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:310107
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com