次の方法で共有


SqlDataReader.GetSchemaTable メソッド

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

Public Overridable Function GetSchemaTable() As DataTable Implements _   IDataReader.GetSchemaTable
[C#]
public virtual DataTable GetSchemaTable();
[C++]
public: virtual DataTable* GetSchemaTable();
[JScript]
public function GetSchemaTable() : DataTable;

戻り値

列メタデータを記述する DataTable

実装

IDataReader.GetSchemaTable

例外

例外の種類 条件
InvalidOperationException SqlDataReader が閉じています。

解説

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

DataReader 列 説明
ColumnName 列の名前。列名は一意でない場合もあります。判断できない場合は、null 値が返されます。この名前は、現在のビュー内またはコマンド テキスト内の列に対する最も最近の名前変更を常に反映した名前になります。
ColumnOrdinal 列の序数。行のブックマーク列 (ある場合) はゼロになります。その他の列は 1 から順に番号が付けられます。この列に null 値を含めることはできません。
ColumnSize 列の値に許容される最大長。固定長データ型を使用する列では、そのデータ型のサイズになります。
NumericPrecision ProviderType が数値データ型の場合は、列の最大精度になります。精度は、列の定義によって決まります。ProviderType が数値データ型以外の場合は、null 値になります。
NumericScale ProviderType が DBTYPE_DECIMAL または DBTYPE_NUMERIC の場合は、小数点の右側の桁数。それ以外の場合は、null 値になります。
IsUnique true の場合は、この列では、ベース テーブル (BaseTableName で返されるテーブル) 内で行に重複する値を格納できないことを示します。列自体がキーを構成している場合や、その列だけに適用される UNIQUE 型の制約がある場合は、IsUnique は必ず true になります。 false: 列はベース テーブル内に重複する値を格納できます。この列の既定値は false です。
IsKey true の場合は、列が、行セット内の行を一意に識別するために組み合わされる、列のセットの 1 つであることを示します。IsKey が true に設定された列のセットは、行セット内の行を一意に識別する必要があります。この列のセットが列の最小セットである必要はありません。この列のセットは、ベース テーブルの主キー、UNIQUE 制約、または一意のインデックスから生成されることもあります。 false の場合は、列が、行を一意に識別する必要がないことを示します。
BaseServerName SqlDataReader が使用する Microsoft SQL Server のインスタンス名。
BaseCatalogName 列を格納している、データ ストア内のカタログの名前。基本カタログ名を判断できない場合は null。この列の既定値は null 値です。
BaseColumnName データ ストア内での列名。エイリアスが使用された場合は、ColumnName 列に返される列名とは異なることがあります。基本列名を判断できない場合や、行セット列であると判明したがデータ ストア内の列と一致しない場合は、null 値。この列の既定値は null 値です。
BaseSchemaName 列を格納している、データ ストア内のスキーマの名前。基本スキーマ名を判断できない場合は null 値。この列の既定値は null 値です。
BaseTableName 列を格納している、データ ストア内のテーブルまたはビューの名前。ベース テーブル名を判断できない場合は null 値。この列の既定値は null 値です。
DataType 列の .NET Framework に合う型に割り当てます。
AllowDBNull コンシューマが列に null 値を設定できる場合や、コンシューマが列に null 値を設定できるかどうかをプロバイダが判断できない場合に、設定されます。それ以外の場合は、設定されません。列を null 値に設定できない場合でも、null 値が含まれている可能性があります。
ProviderType 列のデータ型のインジケータ。列のデータ型が行によって異なる場合は、Object である必要があります。この列に null 値を含めることはできません。
IsAliased 列名がエイリアスである場合は true 。それ以外の場合は false
IsExpression 列が式である場合は true 。それ以外の場合は false
IsIdentity 列が ID 列である場合は true 。それ以外の場合は false
IsAutoIncrement true の場合は、列が、新しい行に固定インクリメントで値を割り当てることを示します。 false の場合は、列が、新しい行に固定インクリメントで値を割り当てないことを示します。この列の既定値は false です。
IsRowVersion 書き込み禁止で、行の識別以外に意味のない値を持つ永続的な行 ID が列に格納されている場合に、設定されます。
IsHidden 列が非表示の場合は true 。それ以外の場合は false
IsLong 非常に長いデータが含まれる BLOB (Binary Long Object) が列に格納されている場合に設定されます。非常に長いデータの定義は、プロバイダによって異なります。
IsReadOnly 列を変更できない場合は true 。それ以外の場合は false

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

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

SqlDataReader クラス | SqlDataReader メンバ | System.Data.SqlClient 名前空間