どのようにのGetSchemaTable()の仕事ですか?
-
21-09-2019 - |
質問
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に、など)から、
所属していません StackOverflow