JDBC APIで定義されているConnection.getMetaData()のC/Jにおける実装の件
JDBC APIはこちら.
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Connection.html#getMetaData()
C/J実装ではver5.0.7以上でDatabaseMetaDataUsingInfoSchemaクラスを使うってなっているけど,ver5.0.7で何かあったんだっけ.
/** * A connection's database is able to provide information describing its * tables, its supported SQL grammar, its stored procedures, the * capabilities of this connection, etc. This information is made available * through a DatabaseMetaData object. * * @return a DatabaseMetaData object for this connection * @exception SQLException * if a database access error occurs */ public java.sql.DatabaseMetaData getMetaData() throws SQLException { checkClosed(); if (getUseInformationSchema() && this.versionMeetsMinimum(5, 0, 7)) { return new DatabaseMetaDataUsingInfoSchema(this, this.database); } return new DatabaseMetaData(this, this.database); }
DatabaseMetaDataUsingInfoSchemaクラスのコメント見てもver5.0からInformationSchema使うとだけしか書いてない.
/** * DatabaseMetaData implementation that uses INFORMATION_SCHEMA available in * MySQL-5.0 and newer. * * The majority of the queries in this code were built for Connector/OO.org by * Georg Richter (georg_at_mysql.com). */ public class DatabaseMetaDataUsingInfoSchema extends DatabaseMetaData {
Connector/OO.orgってなんだ.OpenOfficeのことのような気がするんだけど.
DatabaseMetaDataUsingInfoSchemaクラスはどうやらC/J5.0.0で追加されたクラスである模様.
あとはConnection.getMetaDataで取得していろいろ操作すればよい.基本的にDatabaseMetaDataUsingInfoSchemaクラスはDatabaseMetaDataクラスの一部のメソッドをオーバーライドしているだけ.
サーバ側にはMySQLver5.0.2から実装せていると書いてある.
http://dev.mysql.com/doc/mysql/en/information-schema.html