import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; /** * Title 獲取庫中全部表及表的全部字段. <br> * Description. * <p> * Copyright: Copyright (c) 2014-12-3 上午12:00:54 * <p> * Company: ----------- * <p> * Author: dongjihui2005@163.com * <p> * Version: 1.0 * <p> */ public class Mysqltest { /** * @param args * @throws ClassNotFoundException * @throws SQLException */ public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://202.0.0.201:3306/mysql", "root", "root"); System.out.println(getTables(conn)); System.out.println("============================="); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from user"); List<String> colNames = getColNames(rs); while(rs.next()){ for (int i = 0; i < colNames.size(); i++) { System.out.print(rs.getObject(colNames.get(i))); if(i!=colNames.size()-1) System.out.print("\t"); } System.out.println(); } rs.close(); st.close(); conn.close(); } /**獲取數據庫中全部表名稱 * @param conn * @return * @throws SQLException */ private static List<String> getTables(Connection conn) throws SQLException { DatabaseMetaData databaseMetaData = conn.getMetaData(); ResultSet tables = databaseMetaData.getTables(null, null, "%", null); ArrayList<String> tablesList = new ArrayList<String>(); while (tables.next()) { tablesList.add(tables.getString("TABLE_NAME")); } return tablesList; } /**獲取表中全部字段名稱 * @param rs * @throws SQLException */ private static List<String> getColNames(ResultSet rs) throws SQLException { ResultSetMetaData metaData = rs.getMetaData(); int count = metaData.getColumnCount(); System.out.println("getCatalogName(int column) 獲取指定列的表目錄名稱。"+metaData.getCatalogName(1)); System.out.println("getColumnClassName(int column) 構造其實例的 Java 類的徹底限定名稱。"+metaData.getColumnClassName(1)); System.out.println("getColumnCount() 返回此 ResultSet 對象中的列數。"+metaData.getColumnCount()); System.out.println("getColumnDisplaySize(int column) 指示指定列的最大標準寬度,以字符爲單位. "+metaData.getColumnDisplaySize(1)); System.out.println("getColumnLabel(int column) 獲取用於打印輸出和顯示的指定列的建議標題。 "+metaData.getColumnLabel(1)); System.out.println("getColumnName(int column) 獲取指定列的名稱。"+metaData.getColumnName(1)); System.out.println("getColumnType(int column) 獲取指定列的 SQL 類型。 "+metaData.getColumnType(1)); System.out.println("getColumnTypeName(int column) 獲取指定列的數據庫特定的類型名稱。 "+metaData.getColumnTypeName(1)); System.out.println("getPrecision(int column) 獲取指定列的指定列寬。 "+metaData.getPrecision(1)); System.out.println("getScale(int column) 獲取指定列的小數點右邊的位數。 "+metaData.getScale(1)); System.out.println("getSchemaName(int column) 獲取指定列的表模式。 "+metaData.getSchemaName(1)); System.out.println("getTableName(int column) 獲取指定列的名稱。 "+metaData.getTableName(1)); List<String> colNameList = new ArrayList<String>(); for(int i = 1; i<=count; i++){ colNameList.add(metaData.getColumnName(i)); } System.out.println(colNameList); // rs.close(); rs.first(); return colNameList; } }