MetaData

MetaData 元數(shù)據(jù)

指數(shù)據(jù)庫中 庫、表、列的定義信息。

DataBaseMetaData 數(shù)據(jù)庫元數(shù)據(jù)

通過DataBaseMetaData獲取數(shù)據(jù)庫連接的基本信息

  • getURL(); 返回一個String類對象,代表數(shù)據(jù)庫的URL
  • getUserName(); 返回連接當(dāng)前數(shù)據(jù)庫管理系統(tǒng)的用戶名
  • getDriverName(); 返回驅(qū)動程序的名稱
  • getPrimaryKeys(String catalog, String schema, String table); 返回指定表主鍵的結(jié)果集
    • 1 - TABLE_CAT String => 表類別(可為null)
    • 2 - TABLE_SCHEM String => 表模式(可為null)
    • 3 - TABLE_NAME String => 表名稱
    • 4 - COLUMN_NAME String => 列名稱
    • 5 - KEY_SEQ short => 主鍵中的序列號
    • 6 - PK_NAME String =>主鍵的名稱(可為null)
public class DataBaseMetaDataTest {
    public static void main(String[] args) throws Exception {   
        Connection con = jdbcUtils.getConnection();
        //獲取DataBaseMetaData對象
        DatabaseMetaData dmd = con.getMetaData();
        String driverName = dmd.getDriverName();
        System.out.println(driverName);
        String userName = dmd.getUserName();
        System.out.println(userName);
        String url = dmd.getURL();
        System.out.println(url);
        //數(shù)據(jù)庫產(chǎn)品名稱,MySQL
        String name = dmd.getDatabaseProductName();
        System.out.println(name);
        //版本
        String version = dmd.getDatabaseProductVersion();
        System.out.println(version);

ResultSet rs = dmd.getPrimaryKeys(null, null, "account");
        while(rs.next()){
            System.out.println(rs.getObject(3));//3,代表第三列TABLE_NAME
        }
    }
}

獲取數(shù)據(jù)庫表、列、主鍵、外鍵定義信息

  • getTables
  • getColumns
  • getPrimaryKeys

ParameterMetaData 參數(shù)元數(shù)據(jù)

參數(shù)元數(shù)據(jù)主要用于獲取sql語句中占位符的相關(guān)信息。

  • 獲取參數(shù)元數(shù)據(jù)
    • PreparedStatement.getParameterMetaData()
  • ParameterMetaData 對象
    • getParameterCount() 獲取指定參數(shù)的個數(shù)
    • getParameterTypeName(int param) 獲得指定參數(shù)的sql類型
public class ParameterMetaDateTest {
    public static void main(String[] args) throws Exception {
        Connection con = jdbcUtils.getConnection();
        String sql = "select * from account where id=?";
        PreparedStatement pst = con.prepareStatement(sql);
        
        //獲取一個ParameterMetaData
        ParameterMetaData pm = pst.getParameterMetaData();
        
        int count = pm.getParameterCount();//獲取參數(shù)個數(shù)
        String name = pm.getParameterTypeName(1);
//需要在url后添加參數(shù)?generateSimpleParameterMetadata=true
        System.out.println(name);
    }
}

ResultSetMetaData結(jié)果集元數(shù)據(jù)(重點)

  • 獲得ResultSetMetaData對象
    • ResultSet.getMetaData();
  • ResultSetMetaData對象
    • getColumnCount(); 返回resultSet對象的列數(shù)
    • getColumnName(int column);
    • getColumnTypeName(int column);
public class ResultSetMetaDateTest {
    public static void main(String[] args) throws Exception{
        Connection con = jdbcUtils.getConnection();
        ResultSet rs = con.createStatement().executeQuery("select * from account");
        
        //得到結(jié)果集元數(shù)據(jù)
        ResultSetMetaData rmd = rs.getMetaData();
        
        System.out.println(rmd.getColumnCount());
        System.out.println(rmd.getColumnName(2));
        System.out.println(rmd.getColumnTypeName(1));
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容