zoukankan      html  css  js  c++  java
  • jdbc元数据

    l  在jdbc中获取数据库的定义,例如:数据库、表、列的定义信息。就用到元数据。

    l  在jdbc中可以使用: 数据库元数据、参数元数据、结果集元数据

    l  (元数据定义相关api,  ..MetaData)


    package com.loaderman.demo.b_metadata;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.ParameterMetaData;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    
    import com.loaderman.demo.utils.JdbcUtil;
    import org.junit.Test;
    
    
    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();
            }
    
        }
    }
  • 相关阅读:
    【K8S】Kubernetes: --image-pull-policy always does not work
    【Maven插件】exec-maven-plugin
    【分布式事务】微服务架构下的分布式事务问题
    【Jenkins】新版本的特性:自定义流水线
    【Kibana】自定义contextPath
    【Zuul】Zuul过滤器参考资料
    【Spring】Springboot监听器,启动之后初始化工作
    【Spring】bean动态注册到spring
    【Java-JPA】让Springboot启动不检查JPA的数据源配置
    linux-批量杀死进程
  • 原文地址:https://www.cnblogs.com/loaderman/p/10008647.html
Copyright © 2011-2022 走看看