• 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

  • 相关阅读:
    php极光网络一键登录(yii框架)
    Sublime Text3将多行转为为一行 | Sublime Text 快速分别独立选中多行
    mysql 将时间戳转换成日期格式
    Vant主题定制修改颜色样式
    TypeError: this.getOptions is not a function 引入less一直报错
    export defaul 和 export定义和区别
    Vue vant引入,tabbar封装使用示例
    php去除富文本编辑器中的内容格式
    ES6:高级数组函数,filter/map/reduce
    [BZOJ2793][Poi2012]Vouchers
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13199647.html
走看看 - 开发者的网上家园