- PR -

テーブルのフィールド情報を取得するには?

投稿者投稿内容
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-10-30 21:21
現在、データベースを操作するためのシステムを開発しています。

システムを利用するユーザが、自分でテーブルを作成するため、
どんなテーブルが作られ、どんな型の、どんな名前の列が出来るのか、
開発者側で前もって予想することが出来ません。

そのためデータベース内に存在するテーブルから、
列名やデータ型などのフィールド情報を取得し、
その情報を元に、色々な処理を行いたいと考えています。

テーブルのフィールド情報を取得するにはどうしたらよいでしょうか?
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-10-30 21:59
http://www.wakhok.ac.jp/~tetuo/j2ee/jdbc3.html
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-10-30 22:38
ははぁ〜。なるほど。
何となく感じはつかめました。

まずはこれで、試してみたいと思います。

しょむさんありがとうございました。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-01 07:24
ResultSetMetaData # getColumnTypeName();
を使用して、データ型を取得したのですが、
どうやら、標準 SQL しか識別できないようで、
PostgreSQL や MySQL 固有のデータ型は、
勝手に変換されて表示されてしまいます。

PostgreSQL や MySQL 固有のデータ型を取得して、
そのまま表示させることは出来ないんですかね〜?
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2002-11-01 12:33
MySQLのことしか分からなく恐縮ですが、このSQL

 DESC テーブル名 フィールド名

を実行した結果セットから、Typeフィールドの値を引っ張ってきてあげて、文字列を正規表現クラスなんかに通してあげれば、型の名前や設定できる値を簡単に扱うことができますよ。昔はこれで設定できるデータを抽出して、ドロップダウンリスト用のHTMLに変換して使ってたりしてましたよ。PHPとかでも同じ方法でMySQLのフィールド型情報を扱ってました。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-01 20:58
引用:

MySQLのことしか分からなく恐縮ですが、このSQL

 DESC テーブル名 フィールド名

を実行した結果セットから、Typeフィールドの値を引っ張ってきてあげて、文字列を正規表現クラスなんかに通してあげれば、型の名前や設定できる値を簡単に扱うことができますよ。昔はこれで設定できるデータを抽出して、ドロップダウンリスト用のHTMLに変換して使ってたりしてましたよ。PHPとかでも同じ方法でMySQLのフィールド型情報を扱ってました。




小僧さんありがとうございます。

おっしゃることはだいたい分かるのですが、何分経験不足なため、
もう少し具体的に教えていただければうれしいです。

よろしくお願いします。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-11-02 11:55
JDBC ドライバが製品依存の情報を返すんじゃ標準 API としての意味がないですからね。

DBMS によっては、ある Query を実行すれば、メタ情報を取れる方法がある、ということです。
使いたい DBMS のマニュアルを目を皿にして探してください。
独自拡張としてそういう機能があればそれを使いましょう。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-03 14:04
引用:

DBMS によっては、ある Query を実行すれば、メタ情報を取れる方法がある、ということです。
使いたい DBMS のマニュアルを目を皿にして探してください。
独自拡張としてそういう機能があればそれを使いましょう。



ありました〜!!

しょむさん。ありがとうございます。
これを使えば何とかなりそうです。

早速実験〜♪

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