5分鐘學會java獲取資料庫列名、別名、型別等資訊
阿新 • • 發佈:2018-11-15
獲取資料庫列名、別名、型別等資訊
一、前言
本次總結為:獲取資料庫表列名,別名,型別,列數,表名等相關資訊。
現
總結如下:
二、程式碼
/** * 描述:獲取資料庫相關資訊 * @author 猿醫生 * @date 2018年10月31日 * */ public class ConnInfo { public static void main(String[] args){ String sql = " select * from ord_base "; // 用於呼叫儲存過程:CallableStatement cs = null; PreparedStatement cs = null; ResultSetMetaData data = null; ResultSet rs = null; try { // 用於呼叫儲存過程:cs = JDBCUtils.getConnection("url","username","password").prepareCall(sql); // 用於呼叫儲存過程:cs.execute(); cs = JDBCUtils.getConnection("url","username","password").prepareStatement(sql); rs = cs.executeQuery(sql); data = rs.getMetaData(); while(rs.next()){ for(int i = 1 ; i <= data.getColumnCount() ; i++){ //獲得所有列的數目及實際列數 int columnCount = data.getColumnCount(); //獲得指定列的列名 String columnName = data.getColumnName(i); //獲得指定列的列值 String columnValue = rs.getString(i); //獲得指定列的資料型別 int columnType = data.getColumnType(i); //獲得指定列的資料型別名 String columnTypeName = data.getColumnTypeName(i); //所在的Catalog名字 String catalogName = data.getCatalogName(i); //對應資料型別的類 String columnClassName = data.getColumnClassName(i); //在資料庫中型別的最大字元個數 int columnDisplaySize = data.getColumnDisplaySize(i); //預設的列的標題 String columnLabel = data.getColumnLabel(i); //獲得列的模式 String schemaName = data.getSchemaName(i); //某列型別的精確度(型別的長度) int precision = data.getPrecision(i); //小數點後的位數 int scale = data.getScale(i); //獲取某列對應的表名 String tableName = data.getTableName(i); // 是否自動遞增 boolean isAutoInctement = data.isAutoIncrement(i); //在資料庫中是否為貨幣型 boolean isCurrency = data.isCurrency(i); //是否為空 int isNullable = data.isNullable(i); //是否為只讀 boolean isReadOnly = data.isReadOnly(i); //能否出現在where中 boolean isSearchable = data.isSearchable(i); System.out.println(columnCount); System.out.println("獲得列"+i+"的欄位名稱:"+columnName); System.out.println("獲得列"+i+"的欄位值:"+columnValue); System.out.println("獲得列"+i+"的型別,返回SqlType中的編號:"+columnType); System.out.println("獲得列"+i+"的資料型別名:"+columnTypeName); System.out.println("獲得列"+i+"所在的Catalog名字:"+catalogName); System.out.println("獲得列"+i+"對應資料型別的類:"+columnClassName); System.out.println("獲得列"+i+"在資料庫中型別的最大字元個數:"+columnDisplaySize); System.out.println("獲得列"+i+"的預設的列的標題:"+columnLabel); System.out.println("獲得列"+i+"的模式:"+schemaName); System.out.println("獲得列"+i+"型別的精確度(型別的長度):"+precision); System.out.println("獲得列"+i+"小數點後的位數:"+scale); System.out.println("獲得列"+i+"對應的表名:" + tableName); System.out.println("獲得列"+i+"是否自動遞增:"+isAutoInctement); System.out.println("獲得列"+i+"在資料庫中是否為貨幣型:"+isCurrency); System.out.println("獲得列"+i+"是否為空:"+isNullable); System.out.println("獲得列"+i+"是否為只讀:"+isReadOnly); System.out.println("獲得列"+i+"能否出現在where中:"+isSearchable); <br> } } } catch (SQLException e) { System.out.println("資料庫連線失敗"); } } }
package com.chongdong.common.util; import java.sql.*; /** * 描述:JDBC工具類 * 提供getConnection方法 * 提供close方法 * 開發步驟: * 1.私有化建構函式,防止外界直接new物件 * 2.提供getConnection,用來對外界提供獲取資料連線 * 3.提供close方法,用來關閉資源 * * @author 猿醫生 * @date 2018年10月31日 * */ public class JDBCUtils { /** 資料庫驅動 */ private final static String JDBC_DRIVER = "com.mysql.jdbc.Driver"; /** * 私有化建構函式,防止外界直接new物件 */ private JDBCUtils(){} /** * 獲得Connection * @param url:資料庫連線地址 * @param username:使用者名稱 * @param password:密碼 * @return */ public static Connection getConnection(String url, String username, String password){ /** 資料庫連線 */ Connection conn = null; try{ /** 載入資料庫驅動,註冊到驅動管理器 */ Class.forName(JDBC_DRIVER); /** 建立Connection連線,資料庫連線引數:地址/使用者名稱/密碼 */ conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e){ // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } /** 返回連線 */ return conn; } /** * 關閉資源 * @param conn * @param st * @param rs */ public static void close(Connection conn, Statement st, ResultSet rs){ if(conn != null){ try { /** 關閉資源 */ conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ /** 保證資源一定會被釋放 */ conn=null; } } if(st != null){ try { /** 關閉資源 */ st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ /** 保證資源一定會被釋放 */ st = null; } } if(rs != null){ try { /** 關閉資源 */ rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ /** 保證資源一定會被釋放 */ rs = null; } } } }
Now ~ ~ ~寫到這裡,就寫完了,如果有幸幫助到你,請記得關注我,共同一起見證我們的成長。
小結
謝謝觀賞,我叫猿醫生。
猿友推薦:正在奔跑的程式猿