• 【使用JDBC获取数据库相关的元数据信息】


    使用JDBC获取数据库相关的元数据信息

    1、元数据类作用
    DatabaseMetaData 描述数据库的元数据对象
    ResultSetMetaData 描述结果集的元数据对象
    2、获取元数据对象的方法 : getMetaData ()

    connection 连接对象, 调用 getMetaData () 方法,获取的是DatabaseMetaData 数据库元数据对象

    PrepareStatement 预处理对象调用 getMetaData () , 获取的是ResultSetMetaData , 结果集元数据对象

    package com.neuedu.test0802;
    
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    
    
    import util.DBUtil;
    
    //1.获取数据库相关的元数据信息 使用DatabaseMetaData
    public class TestMetaData {
    	
    	public static void main(String[] args) throws SQLException {
    		test();
    		testResultSet();
    		
    	}
    	
    	public static void test() throws SQLException {
    		//获取数据库连接对象
    		Connection conn=DBUtil.getConnection();
    //		获取数据库的 元数据对象
    		DatabaseMetaData metaDate=conn.getMetaData();
    //		获取数据库相关的元数据信息
    		String url=metaDate.getURL();
    		System.out.println("数据库URL:"+url);
    		
    		String userName=metaDate.getUserName();
    		System.out.println("当前用户:"+userName);
    		
    		String productName=metaDate.getDatabaseProductName();
    		System.out.println("数据库产品名:"+productName);
    		
    		String version=metaDate.getDatabaseProductVersion();
    		System.out.println("数据库版本:"+version);
    		
    		String driverName=metaDate.getDriverName();
    		
    		//判断当前数据库是否只允许读
    		boolean b=metaDate.isReadOnly();
    
    //		如果时true就表示只读
    		if(b) {
    			System.out.println("当前数据库只允许读操作");
    		}else {
    			System.out.println("不是只读数据库");
    		}
    		
    		conn.close();
    		
    	}
    	//获取结果集的元数据信息
    	public static void testResultSet() throws SQLException {
    		
    //		获取连接
    		Connection conn=DBUtil.getConnection();
    //		获取预处理对象
    		PreparedStatement st=conn.prepareStatement("select * from dept");
    		ResultSet rs=st.executeQuery();
    		
    		ResultSetMetaData metaData=st.getMetaData();  //获取结果集元素对象
    		
    //		获取当前结果集  共有多少列
    		int count=metaData.getColumnCount();
    		System.out.println("当前结果集中共有:"+count+"列");
    		
    		//  获取结果集中列的名称和类型
    		for(int i=1;i<=count;i++) {
    			String columnName=metaData.getColumnName(i);
    			System.out.println("列名:"+columnName);
    			
    			String columnTypeName=metaData.getColumnTypeName(i);
    			System.out.println("类型:"+columnTypeName);
    		}
    		//释放资源
    		
    		DBUtil.close(conn, st, rs);
    		
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    在这里插入图片描述

    3、DatabaseMetaData的常用方法

    方法说明

    getURL() : 获取数据库的URL

    getUserName(): 获取当前数据库的用户名

    getDatabaseProductName(): 获取数据库的产品名称

    getDatabaseProductVersion(): 获取数据的版本号

    getDriverName(): 返回驱动程序的名称

    isReadOnly(): 判断数据库是否只允许只读 true 代表只读

    4、 ResultSetMetaData的常用方法

    方法说明

    getColumnCount() : 当前结果集共有多少列

    getColumnName(int i) : 获取指定列号的列名, 参数是整数 从1开始
    getColumnTypeName(int i): 获取指定列号列的类型, 参数是整数 从1开始

  • 相关阅读:
    使用docker安装redis并持久化
    Typora+picgo-core+gitee配置图床
    LeetCode 面试题 10.11. 峰与谷
    Python遍历删除列表元素的一个奇怪bug
    传输层协议-UDP协议
    Java -- 每日一问:Java并发包提供了哪些并发工具类?
    AtCoder Beginner Contest 278 G.Generalized Subtraction Game(思维题/博弈 multi-sg)
    Git 分支管理流程探讨
    基于springboot小型车队管理系统毕业设计源码
    docker 部署 mysql8.0.30
  • 原文地址:https://blog.csdn.net/qq_45891676/article/details/126145985