【Jdbc】使用ResultSetMetaData類獲得表的元數據(字段名、字段類型和長度)


jdbc雖然出現很多年了,但和SQL一樣歷久彌新,它的潛能還有待發掘。

下面是利用ResultSetMetaData類獲得表的元數據(字段名、字段類型和長度)的程序,希望對大家有所幫助。

【目標表定義】

create table emp_from_10(
    id number(12),
    f1 nvarchar2(10),
    f2 nvarchar2(10),
    f3 nvarchar2(10),
    f4 nvarchar2(10),
    f5 nvarchar2(10),
    f6 nvarchar2(10),
    f7 nvarchar2(10),
    f8 nvarchar2(10),
    f9 nvarchar2(10)
);

【得到表的元數據(字段名、字段類型和長度)的程序】

package com.hy.lab;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;

/**
 * 表的元數據探測器
 */
public class TableMetaProber {
    //-- 以下為連接Oracle數據庫的四大參數
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    private static final String USER = "luna";
    private static final String PSWD = "1234";

    public void run(){
        Connection conn = null;
        PreparedStatement pstmt = null;

        try{
            String sql="select * from emp_from_10 where 1=2";

            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL, USER, PSWD);
            conn.setAutoCommit(false);
            pstmt = conn.prepareStatement(sql);
            // 核心語句,取得查詢的元數據
            ResultSetMetaData rsmd=pstmt.executeQuery().getMetaData();

            for(int i=0;i<rsmd.getColumnCount();i++){
                int index=i+1;
                String columnName=rsmd.getColumnName(index);
                String columnType=rsmd.getColumnTypeName(index);
                int columnLength=rsmd.getColumnDisplaySize(index);

                String msg=String.format("columnName=%s,columnType=%s,columnLength=%d",columnName,columnType,columnLength);
                System.out.println(msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                pstmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args){
        TableMetaProber prober=new TableMetaProber();
        prober.run();
    }
}

【輸出】

columnName=ID,columnType=NUMBER,columnLength=13
columnName=F1,columnType=NVARCHAR2,columnLength=10
columnName=F2,columnType=NVARCHAR2,columnLength=10
columnName=F3,columnType=NVARCHAR2,columnLength=10
columnName=F4,columnType=NVARCHAR2,columnLength=10
columnName=F5,columnType=NVARCHAR2,columnLength=10
columnName=F6,columnType=NVARCHAR2,columnLength=10
columnName=F7,columnType=NVARCHAR2,columnLength=10
columnName=F8,columnType=NVARCHAR2,columnLength=10
columnName=F9,columnType=NVARCHAR2,columnLength=10

【結語】

利用上面的信息,稍微組合一下,就可以創建同構新表了。

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM