MetaData--数据库元数据概要

Java数据库元数据的应用

1、元数据(MetaData)是什么?

定义数据结构的数据

也就是说数据库元数据是用来定义数据库各类对象的数据,如数据库中:数据库名(DataBaseName)、表明(TableName)、列名(CloumnName),还有一些数据库的基本信息:当前连接的用户名、版本名,甚至通过sql语句返回结果集中大部分字符串也是元数据。

2、如何获取数据库元数据?

		// 数据库连接配置
		String driver="com.mysql.cj.jdbc.Driver"; //mysql8.0.20驱动
       	String url="jdbc:mysql://localhost:3306?+”useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
        String username="root";
        String password="123456";
        Class.forName(driver); // 注册驱动
        Properties props = new Properties(); 
        props.setProperty("remarksReporting","true");//获取数据库的备注信息,如果不加此项不能获取备注
        props.setProperty("user",username);
        props.setProperty("password",password);
        //==============================================================================
        
        // 1.获取连接
        this.conn = DriverManager.getConnection(url,props);
        // 2.获取元数据
        DatabaseMetaData metaData = this.conn.getMetaData();

3、能从数据库元数据拿到什么?

		/**
		* 获取数据库基本信息(常用方法)
		*/
		// 获取数据库版本名(Mysql)
		System.out.println(metaData.getDatabaseProductName());
		// 获取数据库用户名(用户名@Ip)
		System.out.println(metaData.getUserName());
		// 查看数据库是否支持事务
		System.out.println(metaData.supportsTransactions());
		// 获取数据库连接信息(上面的代码中的url)
		System.out.println(metaData.getURL());
		// 获取数据库驱动名(MySQL Connector/J)
		System.out.println(metaData.getDriverName());
		// 查看数据库是否只支持读操作
		System.out.println(metaData.isReadOnly());	
		/**
		* 获取数据库:表、列 的信息
		* 返回值类型 ResultSet 
		*/	
		// 获取数据库集合
		ResultSet rs = metaData.getCatalogs();
		while (rs.next()){
			// 输出数据库名
            System.out.println(rs.getString("TABLE_CAT"));
        }
		// 获取数据库表集合
		// 注:第一个参数为数据库名一般需要指定,否则会输出最后一个参数types匹配的全部数据库表信息
		// 这里暂且指定为null,根据需要进行填充数据库名
		ResultSet rs = metaData.getTables(null,null,null,new String[]{"TABLE"});
		while (rs.next()){
			// 输出表名
            System.out.println(rs.getString("TABLE_NAME"));
        }
		// 获取数据库列集合
		// 同理,这里的数据库名需要指定,否则返回数据库中全部的列名集合
		ResultSet rs = metaData.getColumns("dataBaseName",null,"bs_user",null);
		while (rs.next()){
            System.out.println(rs.getString("COLUMN_NAME"));
        }
        //获取数据库的主键集合
        ResultSet primaryKeys = metaData.getPrimaryKeys(null, null, "tableName");
        while (primaryKeys .next()){
            System.out.println(primaryKeys .getString("COLUMN_NAME"));
        }
  • 方法参数概述
  1. catalog 数据库目录名称的 String。对此参数提供 Null 值表示无需使用目录名称。
  2. schemaPattern 数据库架构名称模式的 String 值。对此参数提供 Null 值表示无需使用架构名称。
  3. tableNamePattern 数据库表名称模式的 String。
  4. types 含有要包含的表类型的字符串数组。Null 表示应包含所有表类型。典型的类型有"TABLE",“VIEW”, “SYSTEM TABLE”, “GLOBAL TEMPORARY”,“LOCAL TEMPORARY”, “ALIAS”, “SYNONYM”
  • 结果集中的列可以通过断点调试查看,也可以通过结果集元数据查看
		// 承接上述代码中 ResultSet rs = 。。。
		ResultSetMetaData rsmd = rs.getMetaData();
		// 特别注意索引从 1 开始 !!
		for (int i=1; i<=cols ;i++){
			// 输出结果集元数据列名
			System.out.println(rsmd.getColumnName(i));
		}

4、总结

本节最重要的是理解了元数据的含义:它描述的是数据的数据结构信息。从数据库元数据开始,记录它的基本使用与常见用法,我们可以轻松获取到数据库的基本信息。但进一步研究发现,数据库元数据返回的数据库信息往往存在于一个结果集(ResultSet)中,我们在初步了解它的时候都是通过断点调试来查看其内部信息,那么有没有更直观的方法来查看结果集(ResultSet)中的数据信息呢?答案是肯定的,接下来我们就将论述结果集元数据(ResultSetMetaData)。

猜你喜欢

转载自blog.csdn.net/weixin_38708854/article/details/106091403