- - PR -
ODP.NET におけるスキーマ情報取得
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-16 07:31
Visual Studio 2005 SP1 と、ODP.NET を使用してプログラムを作っています。
Oracle は、 Oracle 10g Release 2 を使用しておりますが、 サンプルとして、プライマリキー付きのテーブルを事前に構築しておきます。 今回、ぶちあたった問題なのですが、汎用的なクラスが1つあり、 このクラスでは、クエリ実行で取得した IDataReader インタフェースから テーブルの構造を取得する、というものです。 内部的には、IDataReader の GetSchemaTable() メソッドを実行して、 テーブル構造を表すデータテーブルを生成しています。 このクラスを作ったときに MySQL のドライバを使って検証をしましたが、 そのときは問題なく動いておりました。 中でも今回、問題になっている IsUnique の値には、きちんと true または false の値が入っていました。 しかし、ODP.NET を使用して同じテーブル構造のテーブルへの Select 文を 発行して得られた OracleDataReader を作ったクラスに投入してみると、 IsUnique の値が、true でも false でもなく、DBNull.Value の値でした。 さらに、プライマリキーの情報も取得できていないようでした。 Oracle のドキュメント等を探し回っておりましたが原因がつかめず、 何が悪いのかも判断できかねる状態となってしまいました。 ぜひご教授いただければ、と思います。 よろしくお願いします。 | ||||||||
|
投稿日時: 2007-05-16 11:14
OTN(Oracle Technorogy Network)のドキュメントサイトは探しましたか? # 無料ですが、会員登録が必要となるかと思います。 下記のドキュメントの表5-44とそれ以降の例ではダメですか? http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B31247-01/OracleDataReaderClass.htm | ||||||||
|
投稿日時: 2007-05-16 22:27
YASUYOKA さん、早速の回答ありがとうございます。
OTN のドキュメントは既に熟読済みなのですが、 もちろん紹介いただいたページも拝見済みです。 GetSchemaTable() メソッドで得られたデータテーブルで、 IsUnique が true となる条件なども実践してみましたが、 そもそも true も false も入っていない状態でした。 CREATE TABLE の方法が悪いのか、そもそも ODP.NET の 仕様としてユニークキーの情報は取得不能なのか、 まったく不明なところではあります。 | ||||||||
|
投稿日時: 2007-05-17 08:52
USER_INDEXES
| ||||||||
|
投稿日時: 2007-05-17 10:29
私も上記の件は、ドキュメントレベルでしか知らないのですが。。。
取りあえず、本家(?)のOTNに投げてみるのも手かも。。。 なお、重複投稿はOTNでは嫌われているので、表現を変えたほうが 良いと思います。 # OTN掲示板サイトは判りますよね。「.NETの部屋」が適当だと思います。 |
1