1. 程式人生 > >5分鐘學會java獲取資料庫列名、別名、型別等資訊

5分鐘學會java獲取資料庫列名、別名、型別等資訊

                                                獲取資料庫列名、別名、型別等資訊

 

一、前言

       本次總結為:獲取資料庫表列名,別名,型別,列數,表名等相關資訊。

          

總結如下:

 

二、程式碼

/**
 * 描述:獲取資料庫相關資訊
 * @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 ~ ~ ~寫到這裡,就寫完了,如果有幸幫助到你,請記得關注我,共同一起見證我們的成長

 

小結

謝謝觀賞,我叫猿醫生。

猿友推薦:正在奔跑的程式猿