- PR -

ODBC接続ででテーブル一覧を取得するには?

1
投稿者投稿内容
assa
会議室デビュー日: 2005/11/26
投稿数: 19
投稿日時: 2005-11-26 16:32
C#を使ってます。

ODBCで接続してDBのテーブルの一覧を取得したいのですが、
何か方法はありますでしょうか?

DBは限定しないでやりたいのですが、
やっぱりDBにあわせて取得するソース(SQL)を変えなければ
ならないのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-26 17:03
引用:

未記入さんの書き込み (2005-11-26 16:32) より:

DBは限定しないでやりたいのですが、
やっぱりDBにあわせて取得するソース(SQL)を変えなければならないのでしょうか?


とのことですが、System.Data.Odbc 以下のクラスを使用されていますか?
であれば出来ないと思います。

そもそも「接続文字列」は DB に合わせて設定せねばなりません。
この時点で DB を意識していますから、そういった作りをすることは出来ませんよね。

# 「テーブル一覧取得」に関してならば、ADOX では意識しないで取得できるハズですが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
assa
会議室デビュー日: 2005/11/26
投稿数: 19
投稿日時: 2005-11-27 01:54
System.Data.Odbc以下を使ってます。。
どのDBの場合もDNSを作ってから
ODBCを経由しても接続文字列は編集が必要でしょうか?

上記で大丈夫ならば
テーブル一覧が取得できればOKです。


なるほどADOXというものがあるのですね。

ちょっと調べて接続をしてみようとしたのですが、
どうもソースの書き方が分かりません。

Catalogを作成し、Connectionを
ActiveConnectionに設定すると書いてあったのですが、
エラーが出てうまくいきません。。

■以下ソース
OdbcConnection con = new OdbcConnection("dsn=ODBCTEST;uid=ooo;pwd=ooo");
ADOX.Catalog cata = new ADOX.Catalog();
cata.ActiveConnection = con;

■以下エラー
System.InvalidCastException:インターフェイスがサポートされていません


ActiveConnectionはstringで接続文字列直接指定してもエラーになりました。。

検索してみてもVBAのもの、OBDCを経由しないものは
いくらか見つかるのですが、ODBCのものはなかなか見つけられませんでした。。
1

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