MetaData

2017-04-23  本文已影响73人  老茂在北京

MetaData 元数据

指数据库中 库、表、列的定义信息。

DataBaseMetaData 数据库元数据

通过DataBaseMetaData获取数据库连接的基本信息

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);
        //数据库产品名称,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
        }
    }
}

获取数据库表、列、主键、外键定义信息

ParameterMetaData 参数元数据

参数元数据主要用于获取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();//获取参数个数
        String name = pm.getParameterTypeName(1);
//需要在url后添加参数?generateSimpleParameterMetadata=true
        System.out.println(name);
    }
}

ResultSetMetaData结果集元数据(重点)

public class ResultSetMetaDateTest {
    public static void main(String[] args) throws Exception{
        Connection con = jdbcUtils.getConnection();
        ResultSet rs = con.createStatement().executeQuery("select * from account");
        
        //得到结果集元数据
        ResultSetMetaData rmd = rs.getMetaData();
        
        System.out.println(rmd.getColumnCount());
        System.out.println(rmd.getColumnName(2));
        System.out.println(rmd.getColumnTypeName(1));
    }
}
上一篇下一篇

猜你喜欢

热点阅读