元数据

 

在jdbc中获取数据库的定义,例如:数据库、表、列的定义信息。就用到元数据。
在jdbc中可以使用: 数据库元数据、参数元数据、结果集元数据
(元数据定义相关api,  ..MetaData)

 

public class App {

    //1. 数据库元数据
    @Test
    public void testDB() throws Exception {
        // 获取连接
        Connection conn = JdbcUtil.getConnection();
        // 获取数据库元数据
        DatabaseMetaData metaData = conn.getMetaData();// alt + shift + L  快速获取方法返回值
        
        System.out.println(metaData.getUserName());
        System.out.println(metaData.getURL());
        System.out.println(metaData.getDatabaseProductName());
    }
    
    //2. 参数元数据
    @Test
    public void testParams() throws Exception {
        // 获取连接
        Connection conn = JdbcUtil.getConnection();
        // SQL
        String sql = "select * from dept where deptid=? and deptName=?";
        // Object[] values = {"tom","888"};
        
        PreparedStatement pstmt = conn.prepareStatement(sql);
        // 参数元数据
        ParameterMetaData p_metaDate = pstmt.getParameterMetaData();
        // 获取参数的个数
        int count = p_metaDate.getParameterCount();
        
        
        // 测试
        System.out.println(count);
    }
    
    // 3. 结果集元数据
    @Test
    public void testRs() throws Exception {
        String sql = "select * from dept ";
        
        // 获取连接
        Connection conn = JdbcUtil.getConnection();
        PreparedStatement pstmt = conn.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        // 得到结果集元数据(目标:通过结果集元数据,得到列的名称)
        ResultSetMetaData rs_metaData = rs.getMetaData();
        
        // 迭代每一行结果
        while (rs.next()) {
            // 1. 获取列的个数
            int count = rs_metaData.getColumnCount();
            // 2. 遍历,获取每一列的列的名称
            for (int i=0; i<count; i++) {
                // 得到列的名称
                String columnName = rs_metaData.getColumnName(i + 1);
                // 获取每一行的每一列的值
                Object columnValue = rs.getObject(columnName);
                // 测试
                System.out.print(columnName + "=" + columnValue + ",");
            }
            System.out.println();
        }
        
    }
    
    
    
}

 

posted @ 2016-09-15 10:34  微风星宇  阅读(230)  评论(0编辑  收藏  举报