データベースのテーブル名、フィールド名取得について

[戻る]
長谷川 2004/11/26(金) 10:17:08
■OS:Windows2000
■言語:Visual C++6.0
■データベース:Access2000(ODBC接続)

任意のテーブルにアクセスし、データ操作を行うプログラムを作成しています。
質問なのですが、データベースにアクセスし、テーブル名を取得および各テーブル内のフィール
ド名(データ型も含めて)取得する方法はありますでしょうか。

CDatabaseやCRecordsetにはそのような関数はないようですし。(CRecordset::GetTableName
()だと、CRecordsetオブジェクトを生成する際にテーブル名を知っていないとできそうもない
ので意味なさそうですし。)

ちなみに過去ログ「VC上からmdbファイルの内容を取得」(2003/1/29)も見てみたのですが、
「_RecordsetPtr」の型がヘルプで見つからない等で理解ができませんでした。
ODBC API関数か何かを使う必要があるのでしょうか。

よろしくご教示下さい。

PATIO 2004/11/29(月) 13:48:24
VC++6のHELP(MSDN)に「データベース トピック(総合)」と言うのがあります。
これの下の方に「データベース カタログ情報について学ぶには」と言うのがあるので
ここからリンクを辿って調べてみてはどうでしょうか。
ざっと見た感じでは参考になると思いました。

2004/11/29(月) 17:33:43
以下のSQL文がひょっとすると役に立つかもしれません。
(IBMのDB2の環境でのSQL文なんで、他の環境では試してないですが。)

describe select * from [テーブル名]

使えなかったらごめんなさい。

長谷川 2004/12/01(水) 09:40:46
[[解決]]
回答有難うございます。

PATIOさん:
CDatabaseではなく、CDaoDatabaseを使わないといけないみたいですね。
書き換えてやってみます。

んさん:
SQL文にdescribeがあったかどうか定かではありませんが、試してみます。

古いスレッドには追加発言できません。