|
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.
|
(first uploaded 2003/03/22 last updated (not ever), URANO398)
|