質問

OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();

GetSchemaTable()のしくみを教えてください。

それはRDBMS?

でその情報を取得しません
役に立ちましたか?

解決

IDataReader.GetSchemaTable()の実装がプロバイダにアップしている - それは異なりますので。独自のプロバイダを作成し、それをあなたが望む任意の方法を行うことができます。

あなたはその結果は何が含まれている可能性があるので、型指定のないDataTableまたはDataSetを返すインタフェースのメソッドを持っていてはいけません - 正直に言うと、このフレームワークでは、設計の不良ビットです。ちょっと最初の場所でのインターフェイスで、それを制約のポイントを敗北:は、「あなたはリターンがDataTableというメソッドを持っている必要がありますが、我々はそれを持っているものの行や列を気にしない」

プロバイダがSQL GetSchemaTable()場合でも[syscolumns]または[sysobjects]に戻っていません。これは、結果セットがDB内の任意のオブジェクトを反映する必要はありませんので、とにかく追加の権限を必要としない仕事、追加のDBコールになります。

私は確かではないんだけど、私は、結果セットで開催されたメタデータのいくつかのプロパティを読み取ることIDataReader.GetSchemaTable()実装の大半を期待したい。

他のヒント

のGetSchemaTable()はADO.NETによって返される結果セットにメタデータを読み出す。

各データベース内のシステム・テーブル(例えば、SYSCOLUMNS、sysobjectsに、など)から、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top