JDBCのメタデータにはDatabaseMetaDataとResultSetMetaDataがある。
どちらでもテーブルの項目の属性を取得できるが、違いがあるようなのでちょっと比較してみた。
ResultSetMetaDataはSELECT文を実行しないといけないので静的な情報(テーブル定義)を取得する目的ではないような気がするが、逆にSELECT文で演算したりした場合も属性が取得できるので、SQL実行時に使うにはResultSetMetaDataの方がいいようだ。
DatabaseMetaDataでは項目の型の桁数を取得するのにCOLUMN_SIZEというのがあって、ResultSetMetaDataで対応するのがgetColumnDisplaySize()かと思ったら、取れる値が違う。
ResultSetMetaDataの方では桁数を取得するメソッドが無いのかーと思ったら、getPrecision()がそのメソッドらしい。やはりJavadocはちゃんと見るべきだな^^;
しかしなんで他のメソッドは「getColumn」で始まってるのに、これはそうじゃないんだ(苦笑)
ついでに、isNullable()もちょっと微妙。「is」で始まってるからbooleanかと思いきや、戻り値はint。自分もこういう命名はたまにやっちゃうけど、あんまり良くないよな(苦笑)