テーブルの主キー名と型を取得

java.sql.DatabaseMetaDataとjava.sql.ResultSetを使う
結論としては1発で両方は取れない
たとえば以下のようなテーブル構造(MYSQL)

CREATE TABLE IF NOT EXISTS usertable (
id int(11) NOT NULL auto_increment,
job char(255) default NULL,
sex char(255) NOT NULL default ”,
hobby char(255) default NULL,
PRIMARY KEY (id)
);

//データーベースに接続
//主キー名を取得(テーブル名を指定)

Connection con = DriverManager.getConnection(dburl,user,pass);
DatabaseMetaData dbmd = con.getMetaData();   
ResultSet rs = dbmd.getPrimaryKeys(null, null, "usertable");
while (rs.next()) {
System.out.println(rs.getString("COLUMN_NAME")); //名前  :id
System.out.println(rs.getString("PK_NAME")); //主キーであるか(nullの場
合あり):PRIMARY
System.out.println(rs.getString("KEY_SEQ")); //列番号 : 1(列目)
}

//指定したカラム名の情報を取得
ResultSet rs = dbmd.getColumns(null, null, "usertable","id");
while (rs.next()) {
System.out.println(rs.getString("COLUMN_NAME")); //名前  :id
System.out.println(rs.getString("TYPE_NAME")); //型: int
}

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.