- PR -

ODP.NET におけるスキーマ情報取得

1
投稿者投稿内容
ケビン
会議室デビュー日: 2007/04/12
投稿数: 15
投稿日時: 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 のドキュメント等を探し回っておりましたが原因がつかめず、
何が悪いのかも判断できかねる状態となってしまいました。
ぜひご教授いただければ、と思います。

よろしくお願いします。
YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2007-05-16 11:14
引用:

ケビンさんの書き込み (2007-05-16 07:31) より:
しかし、ODP.NET を使用して同じテーブル構造のテーブルへの Select 文を
発行して得られた OracleDataReader を作ったクラスに投入してみると、
IsUnique の値が、true でも false でもなく、DBNull.Value の値でした。
さらに、プライマリキーの情報も取得できていないようでした。

Oracle のドキュメント等を探し回っておりましたが原因がつかめず、
何が悪いのかも判断できかねる状態となってしまいました。



OTN(Oracle Technorogy Network)のドキュメントサイトは探しましたか?
# 無料ですが、会員登録が必要となるかと思います。

下記のドキュメントの表5-44とそれ以降の例ではダメですか?
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B31247-01/OracleDataReaderClass.htm
ケビン
会議室デビュー日: 2007/04/12
投稿数: 15
投稿日時: 2007-05-16 22:27
YASUYOKA さん、早速の回答ありがとうございます。

OTN のドキュメントは既に熟読済みなのですが、
もちろん紹介いただいたページも拝見済みです。
GetSchemaTable() メソッドで得られたデータテーブルで、
IsUnique が true となる条件なども実践してみましたが、
そもそも true も false も入っていない状態でした。

CREATE TABLE の方法が悪いのか、そもそも ODP.NET の
仕様としてユニークキーの情報は取得不能なのか、
まったく不明なところではあります。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2007-05-17 08:52
USER_INDEXES
YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2007-05-17 10:29
引用:

ケビンさんの書き込み (2007-05-16 22:27) より:
GetSchemaTable() メソッドで得られたデータテーブルで、
IsUnique が true となる条件なども実践してみましたが、
そもそも true も false も入っていない状態でした。



私も上記の件は、ドキュメントレベルでしか知らないのですが。。。

引用:

CREATE TABLE の方法が悪いのか、そもそも ODP.NET の
仕様としてユニークキーの情報は取得不能なのか、



取りあえず、本家(?)のOTNに投げてみるのも手かも。。。
なお、重複投稿はOTNでは嫌われているので、表現を変えたほうが
良いと思います。
# OTN掲示板サイトは判りますよね。「.NETの部屋」が適当だと思います。
1

スキルアップ/キャリアアップ(JOB@IT)