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

  • 相关阅读:
    eclipse如何与git 配合工作。
    git托管代码(二)
    PPC2003 安装 CFNET 3.5成功
    我的Window Mobile WCF 項目 第三篇 WM窗体设计
    我的Window Mobile WCF 項目 第一篇Mobile开发和WinForm开发的区别
    我的Window Mobile WCF 項目 第七天
    我的Window Mobile WCF 項目 第二篇 WindowsMobile访问WCF
    WCF 用vs2010 和 vs2008的简单对比测试
    vs2010beta1 和 搜狗输入法 冲突,按下 Ctrl 键就报错,重装搜狗解决
    我的Window Mobile WCF 項目 第六天 (二)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13199647.html
Copyright © 2011-2022 走看看