今天刚发现,原来通过jdbc的Connection对象,可以获取这么多的信息,包括所有的表结构。
package com.billows.test;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
/**
* Test.java<br>
* @author Billows.Van
* @since Create on 2010-07-12 14:14:20
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
String user="root";
String pwd="123456";
String url="jdbc:mysql://localhost:3306/test";
Connection conn=DriverManager.getConnection(url, user, pwd);
DatabaseMetaData databaseMetaData= conn.getMetaData();
System.out.println("===getCatalogs===");
ResultSet rs=databaseMetaData.getCatalogs();
while(rs.next()){
System.out.print(rs.getString("TABLE_CAT")+"\t");
}
System.out.println();
System.out.println("===getSchemas===");
rs=databaseMetaData.getSchemas();
while(rs.next()){
System.out.print(rs.getString("TABLE_SCHEM")+"\t");
}
System.out.println();
System.out.println("===getTableTypes===");
rs=databaseMetaData.getTableTypes();
while(rs.next()){
System.out.print(rs.getString("TABLE_TYPE")+"\t");
}
System.out.println("\n");
rs= databaseMetaData.getTables("", "", "", null);
while(rs.next()){
System.out.print(rs.getString("TABLE_CAT")+"\t");
System.out.print(rs.getString("TABLE_SCHEM")+"\t");
System.out.print(rs.getString("TABLE_TYPE")+"\t");
System.out.println(rs.getString("TABLE_NAME"));
}
System.out.println();
rs=databaseMetaData.getColumns("test", "", "categories", "");
while(rs.next()){
System.out.println(rs.getString("COLUMN_NAME")+"\t"
+rs.getString("DATA_TYPE")+"\t"
+rs.getString("COLUMN_SIZE")+"\t"
+rs.getString("DECIMAL_DIGITS")+"\t"
+rs.getString("NULLABLE")+"\t"
+rs.getString("COLUMN_DEF")+"\t"
+rs.getString("REMARKS")+"\t"
);
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}