zoukankan      html  css  js  c++  java
  • MYSQL 之 JDBC(十): JDBC的元数据

    • 可以从Connection对象中获得有关数据库管理系统的各种信息

    • 获取这些信息的方法都是在DatabaseMetaData类中。

    • DatabaseMetaData:描述数据库的元数据对象

    • ResultSetMetaData:描述结果集的元数据对象

    package com.litian.jdbc;
    
    import java.sql.*;
    
    /**
     * @author: Li Tian
     * @contact: litian_cup@163.com
     * @software: IntelliJ IDEA
     * @file: MetaDataTest.java
     * @time: 2020/3/29 15:12
     * @desc: |
     */
    
    public class MetaDataTest {
    
        public static void main(String[] args){
            testDatabaseMetaData();
            testResultSetMetaData();
        }
    
        /**
         * ResultSetMetaData:描述结果集的元数据对象
         * 可以得到结果集中的基本信息:结果集中有哪些列,列名、列的别名等。
         * 结合反射可以写出通用的查询方法
         */
        public static void testResultSetMetaData(){
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
    
            try {
                conn = JDBCTools.getConnection();
                String sql = "select id, username 姓名, pwd from t_user";
                ps = conn.prepareStatement(sql);
                rs = ps.executeQuery();
    
                // 1. 得到ResultSetMetaData对象
                ResultSetMetaData rsmd = rs.getMetaData();
    
                // 2. 得到列的个数
                int columnCount = rsmd.getColumnCount();
                System.out.println(columnCount);
    
                for (int i = 0; i < columnCount; i++) {
                    // 3. 得到列名
                    String columnName = rsmd.getColumnName(i + 1);
                    // 4. 得到列的别名
                    String columnLabel = rsmd.getColumnLabel(i + 1);
                    System.out.println(columnName + "-->" + columnLabel);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCTools.release(rs, ps, conn);
            }
        }
    
        /**
         * DatabaseMetaData是描述数据库的元数据对象
         * 可以由Connection得到
         */
        public static void testDatabaseMetaData(){
            Connection conn = null;
            ResultSet rs = null;
    
            try {
                conn = JDBCTools.getConnection();
                DatabaseMetaData data = conn.getMetaData();
    
                // 可以得到数据库本身的一些基本信息
                // 1. 得到数据库的版本号
                int version = data.getDatabaseMajorVersion();
                System.out.println(version);
    
                // 2. 得到连接数据库的用户名
                String user = data.getUserName();
                System.out.println(user);
    
                // 3. 得到MySQL中有哪些数据库
                rs = data.getCatalogs();
                while (rs.next()) {
                    System.out.println(rs.getString(1));
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCTools.release(rs, null, conn);
            }
        }
    }
    View Code

    ————————————————
    版权声明:本文为CSDN博主「李英俊小朋友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_21579045/article/details/105386353

  • 相关阅读:
    Spring Boot (五): Redis缓存使用姿势盘点
    跟我学SpringCloud | 第二十章:Spring Cloud 之 okhttp
    Spring Boot (四): Druid 连接池密码加密与监控
    跟我学SpringCloud | 第十九章:Spring Cloud 组件 Docker 化
    跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境
    Spring Boot (三): ORM 框架 JPA 与连接池 Hikari
    Spring Cloud Alibaba | Dubbo Spring Cloud 之 HTTP 实战
    Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合
    Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面
    可以穿梭时空的实时计算框架——Flink对时间的处理
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13199647.html
Copyright © 2011-2022 走看看