JDBCを使った表定義の表示ユーティリティ

 JDBCを使って、指定したテーブルに対して

SELECT * FROM {テーブル名} WHERE 1=2
というSQLを発行して、 出てくるカラムの情報(ResultSetMetaDataオブジェクト) を表示するプログラムです。 カラムの名前、データ型、小数点以下の桁数を表示します。

import java.sql.*;
import java.io.*;

/**
 * 指定したテーブルの表定義を表示するクラスです。
 * 2003/03/20
 */
public class TableDefLister {
  String tableName = null;
  String user     = "urano";
  String password = "urano398";
  String database = "udb";

  Exception exception = null;

  public TableDefLister(String tableName){
    this.tableName = tableName;
  }

  public final Exception getException(){
    return exception;
  }

  /**
   * 表定義を検索して表示します。エラーが発生したら、
   * getException()メソッドで取得できる内部変数にその内容を保存します。
   * @return 正常終了なら真、エラーなら偽
   */
  public boolean list(){
    try {
      Class.forName("org.gjt.mm.mysql.Driver");
    } catch(ClassNotFoundException ex){
      this.exception = ex;
      return false;
    }
    try {
      Connection conn =
        DriverManager.getConnection ("jdbc:mysql://localhost:3306/" +
             database + "?useUnicode=true&characterEncoding=SJIS",
             user, password);

      Statement stmt = conn.createStatement ();
      ResultSet rset = stmt.executeQuery(
        "SELECT * FROM " + tableName + " WHERE 1 = 2"
      );
      ResultSetMetaData rsmd = rset.getMetaData();
      int colCount = rsmd.getColumnCount();
      for(int i=1; i<=colCount; i++){
        System.out.println(rsmd.getColumnName(i) + "\t" +
          rsmd.getColumnTypeName(i) + "\t" + rsmd.getScale(i));
      }

      rset.close();
      stmt.close();
      // データベースから切断して、完了。
      conn.close();
    } catch(SQLException ex){
      this.exception = ex;
      return false;
    }
    return true;
  }

  public static void main(String[] args) {
    TableDefLister lister = new TableDefLister("SHITEN");
    if(lister.list()){
      System.out.println("正常終了");
    }
    else{
      Exception ex = lister.getException();
      System.out.println("おおっと!エラーが発生しました。:" + ex.toString());
      ex.printStackTrace();
    }
  }
}
// end.

JDBC and Swing Top

(first uploaded 2003/03/22 last updated (not ever), URANO398)

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル