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);
            }
        }
    }
  • 相关阅读:
    Java 跨系统开发隐患(一)
    SpringBoot邮件推送功能
    基于图灵api的Python机器人
    JSP编码问题解决方法
    记一次数据结构课设
    基于百度语音识别API的Python语音识别小程序
    帝国cms过滤采集内容
    如何批量取消文章审核
    评论时判断会员是否登录
    帝国cms把文章加入到收藏夹代码
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13308985.html
Copyright © 2011-2022 走看看