OpenSchema メソッド
プロバイダーからデータベース スキーマ情報を取得します。
構文
Set recordset = connection.OpenSchema(QueryType, Criteria, SchemaID)
戻り値
スキーマ情報を含む Recordset オブジェクトを返します。 Recordset は、読み取り専用の静的カーソルとして開きます。 QueryType では、Recordset に表示される列を決定します。
パラメーター
QueryType
実行するスキーマ クエリの種類を表す SchemaEnum 値。
条件
省略可能。 SchemaEnum に記載されている各 QueryType オプションのクエリ制約の配列。
SchemaID
OLE DB 仕様で定義されていないプロバイダー スキーマ クエリの GUID。 QueryType が adSchemaProviderSpecific に設定されている場合、このパラメーターは必須です。それ以外の場合は使用しません。
注釈
OpenSchema メソッドでは、データ ソース内のテーブル、テーブル内の列、サポートされているデータ型など、データ ソースに関する自己記述情報が返されます。
QueryType 引数は、返される列 (スキーマ) を示す GUID です。 OLE DB 仕様には、スキーマの完全な一覧があります。
Criteria 引数では、スキーマ クエリの結果が制限されます。 Criteria では、結果の Recordset 内の対応する列のサブセット (制約列と呼ばれます) で発生する必要がある値の配列を指定します。
定数 adSchemaProviderSpecific は、プロバイダーが前に示した以外の独自の非標準スキーマ クエリを定義する場合に、QueryType 引数に使用されます。 この定数を使用する場合は、実行するスキーマ クエリの GUID を渡すために SchemaID 引数が必要です。 QueryType が adSchemaProviderSpecific に設定されているのに SchemaID が指定されていない場合、エラーが発生します。
プロバイダーは、すべての OLE DB 標準スキーマ クエリをサポートする必要はありません。 具体的には、OLE DB 仕様では、adSchemaTables、adSchemaColumns、および adSchemaProviderTypes のみが必要です。 ただし、プロバイダーは、前に示したスキーマ クエリの Criteria 制約をサポートする必要はありません。
注意
リモート データ サービスの使用状況OpenSchema メソッドは、クライアント側の Connection オブジェクトでは使用できません。
注意
Visual Basic では、Connection オブジェクトの OpenSchema メソッドから返される Recordset 内に 4 バイトの符号なし整数 (DBTYPE UI4) を持つ列を他の変数と比較することはできません。 OLE DB データ型の詳細については、Microsoft OLE DB プログラマ リファレンスの「OLE DB のデータ型 (OLE DB)」および「付録 A: データ型」を参照してください。
注意
Visual C/C++ ユーザー クライアント側カーソルを使用しない場合、ADO で列スキーマの "ORDINAL_POSITION" を取得すると、MDAC 2.7、MDAC 2.8、および Windows Data Access Components (Windows DAC) 6.0 で VT_R8 型のバリアントが返されます。一方で、MDAC 2.6 で使用されていた型は VT_I4 です。 MDAC 2.6 用に作成され、VT_I4 型で返されるバリアントのみを検索するプログラムでは、MDAC 2.7、MDAC 2.8、および Windows DAC 6.0 で変更せずに実行すると、すべての序数に対してゼロが取得されます。 この変更が加えられたのは、OLE DB で返されるデータ型が DBTYPE_UI4 であり、符号付き VT_I4 型では、切り捨てずにすべての可能な値を格納する十分な領域がなく、データ損失の原因になりかねないためです。
適用対象
参照
OpenSchema メソッドの例 (VB)
OpenSchema メソッドの例 (VC++)
Open メソッド (ADO Connection)
Open メソッド (ADO Record)
Open メソッド (ADO Recordset)
Open メソッド (ADO Stream)
付録 A: プロバイダー