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();
            }
    
        }
    }
  • 相关阅读:
    solr源码解读(转)
    solr安装配置
    HTML转义字符
    JAVA:在0-99间产生100个不重复的随机数
    JS中的$符号
    使用Emacs敲出UML,PlantUML快速指南
    operator 安装
    package handler
    shell 条件判断if
    libvirtError: internal error: No more available PCI slots
  • 原文地址:https://www.cnblogs.com/loaderman/p/10008647.html
Copyright © 2011-2022 走看看