- - PR -
SqlDataReader.GetSchemaTable の IsKey が正常に取得できない
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-01 16:12
C# で WindowsForm + SQL Server 2000 で開発している ごてん と申します。
SQLを自動生成するメソッドを作る目的で、対象となるテーブルの属性を取得しようと sqlDataReader の GetSchemaTable メソッドで各列のメタデータを取得しています。 以下のURLを参考にしました。 http://support.microsoft.com/default.aspx?scid=kb;ja;310107 ところが、OleDbDataReader を使用した場合は、 キーであるフィールドなら true、そうでないフィールドなら false と IsKey の値が正常に取得できるのですが SqlDbDataReader では 上記URLのサンプルどおりのコードでも 必ず IsKey の 値が DBNull になってしまうのです。 同様の現象で解決された方はいらっしゃらないでしょうか? こちらの環境は VS.NET 2003 & SQL Server 2000 SP3 です。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-04-01 16:33
KEIです
そうですね。上記の方法ではとれないようです。そこでExecuteReaderの引数を少し変えてみました。私の環境ではこれで取得できました。
環境:.Netframework1.1,SQLServer2000-SP3 | ||||||||
|
投稿日時: 2004-04-02 08:55
ごてんです。
KEIさんのご指摘のとおり、behavior パラメータを KeyInfo に設定して ExecuteReader を呼び出すと、正常に取得できました。 ありがとうございました。 参考にしたURLには記述がなかったのですが、 HELPの方で以下のメモがありました(申し訳ないです。気が付きませんでした)。 「メモ メタデータの列が正しい情報を確実に返すようにするには、 behavior パラメータを KeyInfo に設定して ExecuteReader を呼び出す必要があります それ以外の場合、スキーマ テーブルのいくつかの列は、 既定のデータ、null、または正しくないデータを返します。」 ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1041/cpref/html/ frlrfsystemdatasqlclientsqldatareaderclassgetschematabletopic.htm |
1