MYSQL 之 JDBC(十): JDBC的元数据

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

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

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

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

MYSQL 之 JDBC(十): JDBC的元数据
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

MYSQL 之 JDBC(十): JDBC的元数据

上一篇:Oracle中Ipad和Rpad函数的用法


下一篇:MYSQL 之 JDBC(七):增删改查(五) DAO设计模式