次の方法で共有


共通のスキーマ コレクション (ADO.NET)

更新 : November 2007

共通のスキーマ コレクションとは、それぞれの .NET Framework マネージ プロバイダにより実装されるスキーマ コレクションのことです。.NET Framework マネージ プロバイダでは、引数を指定しないで、またはスキーマ コレクション名に "MetaDataCollections" を指定して GetSchema メソッドを呼び出すことにより、サポートされるスキーマ コレクションの一覧を決定します。これにより、サポートされるスキーマ コレクションの一覧、それぞれがサポートする制限数、および使用する識別子部分の数と共に、DataTable が返されます。これらのコレクションは、必要なすべての列を表現します。プロバイダでは、任意で列を追加できます。たとえば、SqlClient と OracleClient は、ParameterName を制限のコレクションに追加します。

プロバイダでは必要な列の値を特定できない場合、null を返します。

GetSchema メソッドの使用に関する詳細については、「GetSchema およびスキーマ コレクション (ADO.NET)」を参照してください。

MetaDataCollections

このスキーマ コレクションは、データベースに接続するために現在使用されている、.NET Framework マネージ プロバイダによりサポートされるすべてのスキーマ コレクションに関する情報を公開します。

列名

データ型

説明

CollectionName

string

コレクションを返すために GetSchema メソッドに渡すコレクションの名前。

NumberOfRestriction

int

コレクションに対して指定できる制限の数。

NumberOfIdentifierParts

int

複合識別子部分とデータベース オブジェクト名部分の数。たとえば、SQL Server の場合は、テーブルに 3 つ、列に 4 つになります。Oracle の場合は、テーブルに 2 つ、列に 3 つになります。

DataSourceInformation

このスキーマ コレクションは、.NET Framework マネージ プロバイダが現在接続しているデータ ソースに関する情報を公開します。

列名

データ型

説明

CompositeIdentifierSeparatorPattern

string

複合識別子内の複合セパレータと一致する正規表現。たとえば、"\." (SQL Server の場合) や、"@|\." (Oracle の場合) のように指定します。

複合識別子は、通常、データベース オブジェクト名で使用されます。たとえば、pubs.dbo.authors または pubs@dbo.authors のようになります。

SQL Server の場合、"\." という正規表現を使用します。OracleClient の場合、"@|\." を使用します。

ODBC の場合、Catalog_name_seperator を使用します。

OLE DB の場合、DBLITERAL_CATALOG_SEPARATOR または DBLITERAL_SCHEMA_SEPARATOR を使用します。

DataSourceProductName

string

"Oracle" や "SQLServer" など、プロバイダによってアクセスされる製品の名前。

DataSourceProductVersion

string

プロバイダによりアクセスされる製品のバージョンを、Microsoft の形式ではなく、データ ソースのネイティブ形式で表します。

場合によっては、DataSourceProductVersion と DataSourceProductVersionNormalized は同じ値になります。OLE DB と ODBC の場合、これらの値は、元になるネイティブ API 内の同じ関数呼び出しに割り当てられる値と常に同じ値になります。

DataSourceProductVersionNormalized

string

String.Compare() を使用して比較できるような、データ ソースの正規化されたバージョン。この形式は、バージョン 10 がバージョン 1 とバージョン 2 の間に並べ替えられることがないように、プロバイダのすべてのバージョンで一貫しています。

たとえば、Oracle プロバイダは、正規化されたバージョンで "nn.nn.nn.nn.nn" という形式を使用します。このため、Oracle 8i データ ソースは、"08.01.07.04.01" を返します。SQL Server では、一般的な Microsoft 形式である "nn.nn.nnnn" を使用します。

場合によっては、DataSourceProductVersion と DataSourceProductVersionNormalized は同じ値になります。OLE DB と ODBC の場合、これらの値は、元になるネイティブ API 内の同じ関数呼び出しに割り当てられる値と同じになります。

GroupByBehavior

GroupByBehavior

GROUP BY 句の列と SELECT リストの集計以外の列間のリレーションシップを指定します。

IdentifierPattern

string

識別子と一致し、その識別子の一致した値がある正規表現。たとえば "[A-Za-z0-9_#$]" になります。

IdentifierCase

IdentifierCase

引用符で囲まれていない識別子が、大文字と小文字を区別して扱われるかどうかを示します。

OrderByColumnsInSelect

bool

ORDER BY 句の列が SELECT リストになければならないかどうかを示します。値が true である場合、SELECT リストになければならないことを示します。値が false である場合、SELECT リストにある必要がないことを示します。

ParameterMarkerFormat

string

パラメータを書式設定する方法を表す書式文字列。

名前付きパラメータがデータ ソースでサポートされている場合、この文字列内の最初のプレースホルダは、パラメータ名が書式設定される必要があることを示します。

たとえば、データ ソースが名前に ":" というプレフィックスが付いたパラメータを要求している場合、これは ":{0}" になります。これを "p1" のパラメータ名で書式設定すると、結果の文字列は ":p1" になります。

データ ソースが "@" というプレフィックスが付いたパラメータを要求しているが、既に名前に含まれている場合、"{0}" になります。"@p1" というパラメータを書式設定した結果は、単に "@p1" になります。

"?" 文字の使用を除き、名前付きパラメータを要求しないデータ ソースの場合、書式文字列は、パラメータ名を無視する "?" として指定できます。OLE DB の場合、"?" を返します。

ParameterMarkerPattern

string

パラメータ マーカーと一致する正規表現。パラメータ名の一致する値になります (一致する値がある場合)。

たとえば、パラメータ名に "@" という前置文字が含まれている、名前付きパラメータがサポートされている場合、"(@[A-Za-z0-9_$#]*)" となります。

ただし、前置文字として ":" が付いた名前付きパラメータがサポートされていて、":" がパラメータ名の一部になっていない場合、":([A-Za-z0-9_$#]*)" となります。

もちろん、データ ソースが名前付きパラメータをサポートしない場合は、単に "?" になります。

ParameterNameMaxLength

int

パラメータ名の文字の最大長。Visual Studio では、パラメータ名がサポートされている場合、最大長の最小値は 30 文字になります。

データ ソースが名前付きパラメータをサポートしない場合、このプロパティは 0 を返します。

ParameterNamePattern

string

有効なパラメータ名と一致する正規表現。異なるデータ ソースでは、パラメータ名として使用できる文字に関して、規則が異なります。

Visual Studio では、パラメータ名がサポートされている場合、文字 "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}" は、パラメータ名として有効な文字がサポートされる最小限のセットになります。

QuotedIdentifierPattern

string

引用符で囲まれた識別子と一致し、引用符を除いた識別子自体の一致する値のある正規表現。たとえば、データ ソースが引用符で囲まれた識別子を識別するために、二重引用符を使用した場合、"(([^\"]|\"\")*)" になります。

QuotedIdentifierCase

IdentifierCase

引用符で囲まれた識別子が、大文字と小文字を区別して扱われるかどうかを示します。

StatementSeparatorPattern

string

ステートメント区切り文字と一致する正規表現。

StringLiteralPattern

string

文字列リテラルと一致し、リテラル自体の一致する値のある正規表現。たとえば、データ ソースが文字列を識別するために単一引用符を使用した場合、"('([^']|'')*')"' になります。

SupportedJoinOperators

SupportedJoinOperators

データ ソースでサポートされる SQL の JOIN ステートメントの種類を指定します。

DataTypes

このスキーマ コレクションは、.NET Framework マネージ プロバイダが現在接続されている、データベースでサポートされているデータ型に関する情報を公開します。

列名

データ型

説明

TypeName

string

プロバイダ固有のデータ型の名前。

ProviderDbType

int

パラメータの型を指定するときに使用する必要のある、プロバイダ固有のデータ型の値。たとえば、SqlDbType.Money または OracleType.Blob になります。

ColumnSize

long

数値以外の列またはパラメータの長さは、最大長か、プロバイダによりこの型に定義された長さのいずれかを参照します。

文字データの場合、これは、最大長か、データ ソースにより定義されている単位で定義された長さです。Oracle には、長さを指定してから、一部の文字データ型の実際の格納サイズを指定するという概念があります。これは、Oracle の単位で長さのみを定義します。

日時のデータ型の場合、これは (秒の小数部構成要素の最大有効桁数を前提として) 文字列表現の長さです。

データ型が数値である場合、これは、データ型の最大有効桁数の上限です。

CreateFormat

string

CREATE TABLE などのデータ定義ステートメントに、この列を追加する方法を示す書式文字列。CreateParameter 配列の各要素は、書式文字列内で "パラメータ マーカー" で表される必要があります。

たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。この場合、書式文字列は "DECIMAL({0},{1})" になります。

CreateParameters

string

このデータ型の列を作成する場合に指定する必要のある作成パラメータ。各作成パラメータは、指定される順序で、コンマで区切られた一覧として文字列内に示されます。

たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。この場合、作成パラメータには、"precision, scale" という文字列が含まれる必要があります。

precision を 10、scale を 2 として DECIMAL 列を作成するためのテキスト コマンド内では、CreateFormat 列の値は DECIMAL({0},{1}) になり、完全な型指定は DECIMAL(10,2) になります。

DataType

string

.NET Framework 型のデータ型の名前。

IsAutoincrementable

bool

true の場合、このデータ型の値で自動インクリメントが行われます。

false の場合、このデータ型の値で自動インクリメントは行われません。

このデータ型の列で自動インクリメントが行われるかどうかを示しているだけであり、この型のすべての列で自動インクリメントが行われるわけではないことに注意してください。

IsBestMatch

bool

true の場合、データ ストア内のすべてのデータ型と、DataType 列の値により指定されている .NET Framework データ型との間で、最も一致するデータ型になります。

false の場合、データ型は、最も一致するデータ型ではありません。

DataType 列の値が同じ行のセットでは、1 行だけで BestMatch 列が true に設定されます。

IsCaseSensitive

bool

true の場合、データ型は文字型であり、大文字と小文字が区別されます。

false の場合、データ型は文字型ではなく、大文字と小文字は区別されません。

IsFixedLength

bool

true の場合、データ定義言語 (DDL) により作成されたこのデータ型の列は、固定長になります。

false の場合、DDL により作成されたこのデータ型の列は、可変長になります。

DBNull.Value の場合、プロバイダが固定長の列または可変長の列によってこのフィールドを割り当てるかどうかは不明です。

IsFixedPrecisionScale

bool

true の場合、データ型には、固定有効桁数と小数点以下桁数があります。

false の場合、データ型には、固定有効桁数と小数点以下桁数がありません。

IsLong

bool

true の場合、データ型には、非常に長いデータが含まれます。非常に長いデータの定義は、プロバイダによって異なります。

false の場合、データ型には、非常に長いデータは含まれません。

IsNullable

bool

true の場合、データ型は null に設定できます。

false の場合、データ型は null に設定できません。

DBNull.Value の場合、データ型を null に設定できるかどうかは不明です。

IsSearchable

bool

true の場合、データ型は、LIKE 述語を除く任意の演算子と共に WHERE 句で使用できます。

false の場合、データ型は、LIKE 述語を除く任意の演算子と共に WHERE 句で使用できません。

IsSearchableWithLike

bool

true の場合、データ型は、LIKE 述語で使用できます。

false の場合、データ型は、LIKE 述語で使用できません。

IsUnsigned

bool

true の場合、データ型は符号なしになります。

false の場合、データ型は符号付きになります。

DBNull.Value の場合、データ型に適用されません。

MaximumScale

short

型インジケータが数値型である場合、小数点の右側にとることができる最大桁数になります。それ以外の場合は DBNull.Value になります。

MinimumScale

short

型インジケータが数値型である場合、小数点の右側にとることができる最小桁数になります。それ以外の場合は DBNull.Value になります。

IsConcurrencyType

bool

true の場合、データ型は、行が変更されるたびにデータベースにより更新され、列の値がすべての前の値とは異なります。

false の場合、データ型は、行が変更されるたびにデータベースにより更新されません。

DBNull.Value の場合、データベースでは、この型のデータ型をサポートしません。

IsLiteralsSupported

bool

true の場合、データ型は、リテラルとして表現できます。

false の場合、データ型は、リテラルとして表現できません。

LiteralPrefix

string

指定されたリテラルに適用されるプレフィックス。

LitteralSuffix

string

指定されたリテラルに適用されるサフィックス。

NativeDataType

String

NativeDataType は、データ型の OLE DB 型を公開するための OLE DB 固有の列です。

制限事項

このスキーマ コレクションは、データベースへの接続に現在使用されている、.NET Framework マネージ プロバイダでサポートされる制限に関する情報を公開します。

列名

データ型

説明

CollectionName

string

これらの制限を適用するコレクションの名前。

RestrictionName

string

コレクション内の制限の名前。

RestrictionDefault

string

無視されます。

RestrictionNumber

int

この特定の制限が収まっているコレクションの制限内の実際の位置。

ReservedWords

このスキーマ コレクションは、.NET Framework マネージ プロバイダが現在接続されている、データベースにより予約されている予約語に関する情報を公開します。

列名

データ型

説明

ReservedWords

string

プロバイダ固有の予約語。

参照

概念

GetSchema およびスキーマ コレクション (ADO.NET)

その他の技術情報

データベース スキーマ情報の取得 (ADO.NET)