JDBC獲取全部表及獲取表全部字段

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;
	}

}
相關文章
相關標籤/搜索