由資料庫名稱得到資料庫的表資訊,包括表的欄位和屬性,可以自動的生成資料庫持久層操作代碼。
package edu.whut.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=sa");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("show tables");
ResultSetMetaData meta = rs.getMetaData();
for (int i = 1; i <= meta.getColumnCount(); i++) {
System.out.print("Items:" + meta.getColumnName(i) + "\n");
while (rs.next()) {
System.out.print("tableName:" + rs.getString(i) + "\n");
ResultSet rs2 = conn.createStatement().executeQuery(
"select * from " + rs.getString(i));
ResultSetMetaData meta2 = rs2.getMetaData();
for (int i1 = 1; i1 <= meta2.getColumnCount(); i1++) {
System.out.print(meta2.getColumnName(i1) + "\n");
System.out.print(meta2.getColumnClassName(i1) + "\n");
}
}
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
全站熱搜
留言列表