日期:2014-05-16  浏览次数:20923 次

基于Java获取Mysql表结构的方法
Class.forName("com.mysql.jdbc.Driver").newInstance();
	Connection conn = DriverManager
				.getConnection("jdbc:mysql://localhost:3306/MALL?user=root&password=123456");
	DatabaseMetaData meta = (DatabaseMetaData) conn.getMetaData();

	ResultSet  rs = meta.getColumns(null, "%", "T_Mall_ReturnOrderInfo", "%");
		
	while (rs.next())  {  
            // table catalog (may be null)  
            String tableCat = rs.getString("TABLE_CAT");  
            // table schema (may be null)  
            String tableSchemaName = rs.getString("TABLE_SCHEM");  
            // table name  
            String tableName_ = rs.getString("TABLE_NAME");  
            // column name  
            String columnName = rs.getString("COLUMN_NAME");  
            
            // SQL type from java.sql.Types  
            int dataType = rs.getInt("DATA_TYPE");  
            
            // Data source dependent type name, for a UDT the type name is  
            // fully qualified  
            String dataTypeName = rs.getString("TYPE_NAME"); 
            System.out.println(columnName + "    " + dataTypeName);
            // table schema (may be null)  
            int columnSize = rs.getInt("COLUMN_SIZE");  
            // the number of fractional digits. Null is returned for data  
            // types where DECIMAL_DIGITS is not applicable.  
            int decimalDigits = rs.getInt("DECIMAL_DIGITS");  
            // Radix (typically either 10 or 2)  
            int numPrecRadix = rs.getInt("NUM_PREC_RADIX");  
            // is NULL allowed.  
            int nullAble = rs.getInt("NULLABLE");  
            // comment describing column (may be null)  
            String remarks = rs.getString("REMARKS");  
            // default value for the column, which should be interpreted as  
            // a string when the value is enclosed in single quotes (may be  
            // null)  
            String columnDef = rs.getString("COLUMN_DEF");  
            //                
            int sqlDataType = rs.getInt("SQL_DATA_TYPE");  
            //                
            int sqlDatetimeSub = rs.getInt("SQL_DATETIME_SUB");  
            // for char types the maximum number of bytes in the column  
            int charOctetLength = rs.getInt("CHAR_OCTET_LENGTH");  
            // index of column in table (starting at 1)  
            int ordinalPosition = rs.getInt("ORDINAL_POSITION");  
            // ISO rules are used to determine the nullability for a column.  
            // YES --- if the parameter can include NULLs;  
            // NO --- if the parameter cannot include NULLs  
            // empty string --- if the nullability for the parameter is  
            // unknown  
            String isNullAble = rs.getString("IS_NULLABLE");  
            // Indicates whether this column is auto incremented  
            // YES --- if the column is auto incremented  
            // NO --- if the column is not auto incremented  
            // empty string --- if it cannot be determined whether the  
            // column is auto incremented parameter is unknown  
            String isAutoincrement = rs.getString("IS_AUTOINCREMENT");  
            System.out.println(tableCat + "-" + tableSchemaName + "-" + tableName_ + "-" + columnName + "-"  
                    + dataType + "-" + dataTypeName + "-" + columnSize + "-" + decimalDigits + "-" + numPrecRadix  
                    + "-" + nullAble + "-" + remarks + "-" + columnDef + "-" + sqlDataType + "-" + sqlDatetimeSub  
                    + charOctetLength + "-" + ordinalPosition + "-" + isNullAble + "-" + isAutoincrement + "-");
        }  
	conn.close();

?