OdbcDataReader.GetSchemaTable メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > OdbcDataReader.GetSchemaTable メソッドの意味・解説 

OdbcDataReader.GetSchemaTable メソッド

OdbcDataReader の列メタデータを記述する DataTable を返します。

名前空間: System.Data.Odbc
アセンブリ: System.Data (system.data.dll 内)
構文構文

Public Overrides Function
 GetSchemaTable As DataTable
Dim instance As OdbcDataReader
Dim returnValue As DataTable

returnValue = instance.GetSchemaTable
public override DataTable GetSchemaTable ()
public:
virtual DataTable^ GetSchemaTable () override
public DataTable GetSchemaTable ()
public override function GetSchemaTable ()
 : DataTable

戻り値
列メタデータを説明する DataTable。

例外例外
例外の種類条件

InvalidOperationException

OdbcDataReader が閉じています。

解説解説

GetSchemaTable メソッドは、各列のメタデータを次の順序で返します。

DataReader 列

説明

ColumnName

列名。列名は一意でない場合もあります。列名が判断できない場合は、null 値が返されます。この名前は、現在のビュー内またはコマンド テキスト内の列に対して指定された最新の名前を常に反映しています。

ColumnOrdinal

列の序数。行のブックマーク列 (ある場合) は 0 になります。その他の列は、1 から順に番号が付けられます。この列には null 値を含めることはできません。

ColumnSize

列の値に許容される最大長。固定長データ型を使用する列では、そのデータ型のサイズになります。

NumericPrecision

DbType が数値データ型の場合は、列の最大精度になります。精度は、列の定義によって決まります。DbType が数値データ型以外の場合は、null 値になります。基になる ODBC ドライバが非数値データ型に対して精度の値を返した場合、この値はスキーマ テーブルで使用されます。

NumericScale

DbType が Decimal の場合は、小数点の右側の桁数。それ以外の場合は、null 値になります。基になる ODBC ドライバが非数値データ型に対して精度の値を返した場合、この値はスキーマ テーブルで使用されます。

DataType

DbType の共通言語ランタイムの型に割り当てます。

ProviderType

基になるドライバの種類。

IsLong

長いデータが格納された BLOB (Binary Long Object) が列に格納されている場合は true。非常に長いデータの定義は、ドライバによって異なります。

AllowDBNull

コンシューマが列に null 値を設定できる場合、またはコンシューマが列に null 値を設定できるかどうかをドライバが判断できない場合は true。それ以外の場合は false。列を null 値に設定できない場合でも、null 値が含まれている可能性があります。

IsReadOnly

列を変更できない場合は true。それ以外の場合は false。

IsRowVersion

書き込み禁止で、行の識別以外に意味のない値を持つ永続的な行 ID が列に格納されている場合に、設定されます。

IsUnique

true の場合は、この列では、ベース テーブル (BaseTableName で返されるテーブル) 内で行に重複する値を格納できないことを示します。列自体がキーを構成している場合や、その列のみに適用される UNIQUE 型の制約がある場合は、IsUnique は必ず true になります。

false : 列はベース テーブル内に重複する値を格納できます。この列の既定値は false です。

IsKey

true の場合は、列が、行セット内の行を一意に識別するために組み合わされる、列のセットの 1 つであることを示します。IsKey が true に設定された列のセットは、行セット内の行を一意に識別する必要があります。この列のセットが列の最小セットである必要はありません。この列のセットは、ベース テーブルの主キー、UNIQUE 制約、または一意のインデックスから生成されることもあります。

false の場合は、列が、行を一意に識別する必要がないことを示します。

IsAutoIncrement

列が、新しい行に固定インクリメントで値を割り当てる場合は true。それ以外の場合は false。この列の既定値は false です。

BaseSchemaName

列を格納している、データ ソース内のスキーマの名前。基本カタログ名を判断できない場合は null。この列の既定値は null 値です。

BaseCatalogName

列を格納している、データ ストア内のカタログ名。基本カタログ名を判断できない場合は null。この列の既定値は null 値です。

BaseTableName

列を格納している、データ ストア内のテーブルまたはビューの名前。ベース テーブル名を判断できない場合は null 値。この列の既定値は null 値です。

BaseColumnName

データ ストア内での列名。別名が使用された場合、ColumnName 列に返された列名とは異なることがあります。基本列名を判断できない場合や、取得された行セット列がデータ ストア内の列と一致しない場合は、null 値。この列の既定値は null 値です。

結果セットの各列ごとに行が返されます。

.NET Framework ODBC 用データ プロバイダでは、SQLPrepare、SQLExecute、または SQLExecuteDirect 関数のいずれかが呼び出された後で、ODBC ドライバからのメタデータ情報を使用できることを前提としています。"SchemaOnly" コマンドが正しく動作するために、SQLPrepare は、必要なメタデータ情報を返す必要があります。すべての ODBC ドライバでこの関数が使用できるわけではなく、また、使用できる場合でもメタデータ情報が返されるとは限りません。このような場合、SchemaTable の一部またはすべての情報が欠落します。SQLPrepare を呼び出した後、データ プロバイダは ODBC の SQLColAttribute 関数を呼び出して、クエリ結果の各列に関連するメタデータ情報 (IsLong、IsUnique、AllowDBNull、BaseTableName、BaseColumnName など) を検索します。基になるドライバが完全な情報を返さない場合、SchemaTable 内の対応する値は正しく設定されません。

.NET Framework ODBC 用データ プロバイダは、SQLPrimaryKeys も呼び出して、各テーブルのキー情報を取得します。基になる ODBC ドライバがこの関数をサポートしていない場合、データ プロバイダは SQLStatistics を呼び出して、一意のインデックスのいずれかをテーブルの主キーとして選択します。これによって目的の結果が得られないこともあります。

OdbcCommandBuilder が正しく動作するためには、テーブルの主キーの正しい ID が必要です。クエリ結果によって BaseTableName が返されない列がある場合、.NET Framework ODBC 用データ プロバイダは、SQL ステートメントを解析して、そのクエリに関連するテーブル名を検索しようとします。この動作は、UPDATE、INSERT、DELETE、および単純な SELECT ステートメントでは行われますが、ストアド プロシージャや結合を使用した SELECT ステートメントでは行われません。このテーブルから一部またはすべてのスキーマ情報が欠落している場合は、正しい INSERT、UPDATE、または DELETE ステートメントを自動生成するために必要なスキーマ情報が足りないため、OdbcCommandBuilder は正しく動作しません。

メタデータの列が正しい情報を確実に返すようにするには、behavior パラメータを KeyInfo に設定して ExecuteReader を呼び出す必要があります。それ以外の場合、スキーマ テーブルのいくつかの列は、既定のデータ、null、または正しくないデータを返します。

メモメモ

Microsoft Jet ODBC ドライバは、一意のインデックス列および主キー列を、null 許容であるかどうかに関係なく常に null 許容として返します。また、このドライバは、主キー情報を返しません。主キーを含む一意のインデックスと、そのインデックスの列のリストだけを返します。主キー列は、他の列と区別されません。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
OdbcDataReader クラス
OdbcDataReader メンバ
System.Data.Odbc 名前空間
その他の技術情報
DataReader の使用



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「OdbcDataReader.GetSchemaTable メソッド」の関連用語

OdbcDataReader.GetSchemaTable メソッドのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



OdbcDataReader.GetSchemaTable メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS