首页 > 数据库 >数据库之元数据

数据库之元数据

时间:2022-12-26 20:44:27浏览次数:37  
标签:之元 数据库 System --- 获取 println 数据 out

1、概述

数据库元数据(DatabaseMetaData):是由Connection对象通过getMetaData方法获取而来,主要封装了是对
数据库本身的一些整体综合信息,例如数据库的产品名称,数据库的版本号,数据库的URL,是否支持事务等等。
以下有一些关于DatabaseMetaData的常用方法:
--- getDatabaseProductName:获取数据库的产品名称
--- getDatabaseProductName:获取数据库的版本号
-- getUserName:获取数据库的用户名
--- getURL:获取数据库连接的URL
--- getDriverName:获取数据库的驱动名称
--- driverVersion:获取数据库的驱动版本号
--- isReadOnly:查看数据库是否只允许读操作
--- supportsTransactions:查看数据库是否支持事务

2、入门案例

2.1、构建环境

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

2.2、获取数据库综合信息

public class DataBaseMetaDataTest {
    private Connection conn;
    @Before
    public void init() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Properties props =new Properties();
        //设置连接属性,使得可获取到表的REMARK(备注)
        props.put("remarksReporting","true");
        props.put("user", "root");
        props.put("password", "111111");
        conn = java.sql.DriverManager.
                getConnection("jdbc:mysql://127.0.0.1:3306/?
useUnicode=true&amp;characterEncoding=UTF8", props);
   }
    @Test
    public void testDatabaseMetaData() throws SQLException {
        //获取数据库元数据
        DatabaseMetaData dbMetaData =  conn.getMetaData();
        //获取数据库产品名称
        String productName = dbMetaData.getDatabaseProductName();
        System.out.println(productName);
        //获取数据库版本号
        String productVersion = dbMetaData.getDatabaseProductVersion();
        System.out.println(productVersion);
        //获取数据库用户名
        String userName = dbMetaData.getUserName();
        System.out.println(userName);
        //获取数据库连接URL
        String userUrl = dbMetaData.getURL();
        System.out.println(userUrl);
        //获取数据库驱动
        String driverName = dbMetaData.getDriverName();
        System.out.println(driverName);
        //获取数据库驱动版本号
        String driverVersion = dbMetaData.getDriverVersion();
        System.out.println(driverVersion);
        //查看数据库是否允许读操作
        boolean isReadOnly = dbMetaData.isReadOnly();
        System.out.println(isReadOnly);
        //查看数据库是否支持事务操作
        boolean supportsTransactions = dbMetaData.supportsTransactions();
        System.out.println(supportsTransactions);
   }
}

2.3、获取数据库列表

 @Test
    public void testFindAllCatalogs() throws Exception {
        //获取元数据
        DatabaseMetaData metaData = conn.getMetaData();
        //获取数据库列表
        ResultSet rs = metaData.getCatalogs();
        //遍历获取所有数据库表
        while(rs.next()){
            //打印数据库名称
            System.out.println(rs.getString(1));
       }
        //释放资源
        rs.close();
        conn.close();
   }

2.4、获取某数据库中的所有表信息

 @Test
    public void testFindAllTable() throws Exception{
        //获取元数据
        DatabaseMetaData metaData = conn.getMetaData();
        //获取所有的数据库表信息
        ResultSet tablers = metaData.getTables("ihrm", "", "bs_user", new String[]
{"TABLE"});
        //拼装table
        while(tablers.next()) {
            //所属数据库
            System.out.println(tablers.getString(1));
            //所属schema
            System.out.println(tablers.getString(2));
            //表名
            System.out.println(tablers.getString(3));
            //数据库表类型
            System.out.println(tablers.getString(4));
            //数据库表备注
            System.out.println(tablers.getString(5));
       }
   }

3、参数元数据

--- getParameterCount:获取预编译SQL语句中占位符参数的个数

    @Test
    public void test() throws Exception {
        String sql = "select * from bs_user where id=?";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, "1063705482939731968");
        //获取ParameterMetaData对象
        ParameterMetaData paramMetaData = pstmt.getParameterMetaData();
        //获取参数个数
        int paramCount = paramMetaData.getParameterCount();
        System.out.println(paramCount);
   }

4、结果集元数据

--- getColumnCount:获取结果集中列项目的个数
--- getColumnType:获取指定列的SQL类型对应于Java中Types类的字段
--- getColumnTypeName:获取指定列的SQL类型
--- getClassName:获取指定列SQL类型对应于Java中的类型(包名加类名)

    @Test
    public void test() throws Exception {
        String sql = "select * from bs_user where id=?";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, "1063705482939731968");
        //执行sql语句
        ResultSet rs = pstmt.executeQuery() ;
        //获取ResultSetMetaData对象
        ResultSetMetaData metaData = rs.getMetaData();
        //获取查询字段数量
        int columnCount = metaData.getColumnCount() ;
        for (int i=1;i<=columnCount;i++) {
            //获取表名称
            String columnName = metaData.getColumnName(i);
            //获取java类型
            String columnClassName = metaData.getColumnClassName(i);
            //获取sql类型
            String columnTypeName = metaData.getColumnTypeName(i);
            System.out.println(columnName);
            System.out.println(columnClassName);
            System.out.println(columnTypeName);
       }
        System.out.println(columnCount);
   }

标签:之元,数据库,System,---,获取,println,数据,out
From: https://www.cnblogs.com/moyanprogram/p/17006831.html

相关文章

  • 11g rac数据库节点1启动异常,告警ORA-16188
    问题描述:11grac数据库节点1启动异常,告警ORA-16188,如下所示:环境介绍:该rac环境此前搭建过dg,将dg拆除后,一次系统重启便出现节点1数据库无法正常启动,告警ORA-16188.1、异常重现......
  • 数据库系统原理——SQL数据查询语言(DQL)
    一.内容概述二.单表查询SQL查询语句的基本结构包括3个子句:select、from、where,其中select子句对应于关系代数中的投影运算,用来指定查询结果中所需的属性表达式from子句对......
  • 数据库系统原理——数据库建模
    一.数据库设计过程的概述1.基本概念(1).数据库设计定义数据库设计就是根据各种应用处理的要求、硬件环境及操作系统特性等,将现实世界中的数据进行合理组织,并利用已有的数......
  • 【数据预处理】基于Pandas的数据预处理技术【california_housing加州房价数据集】_后9
    一.需求分析前七个任务的解决方案,请查看上篇文章:本文主题:基于Pandas的数据预处理技术本次任务共分为16个任务,将其分为前七个任务和后9个任务,本文探讨其后9个任务。本次......
  • 数据库 -- 基础操作
    不知道少了什么,总觉得没有以前快乐,不后悔遇见谁,只后悔变成现在的模样。。。---- 网易云热评一、环境安装PHPstudy下载地址,一路下一步,安装的时候路径不要有中文或者空格​......
  • SQL Server—分离和附加数据库
    目录 ​​一、分离数据库​​​​二、附加数据库​​​​总结​​一、分离数据库什么是分离数据库?指将数据库从SQLServer的实例中删除,使它不在被SQLServer管理和使用,但不......
  • SQL Server——备份与恢复数据库
    为什么要进行备份?不管是任何系统都不可避免的发生一些故障、错误,而为了防止数据丢失找不到的情况,防患于未然,养成备份的好习惯是很有必要的。可以根据自己的实际情况采取具体......
  • 基本数据类型
    任何类型的和字符串相加,最后都是字符串类型true和false参加加法时,true当一来看,false当0看undefind参加加减aN乘除时,最后显示NaNnull表示空的null也是一种数据类型,他表......
  • express的使用:数据库相关(三)
    1.定义:用来组织,存储和管理数据的仓库2.分类a.MySQL(最广泛,流行度最高,community+enterprise),关系数据库,SQL数据库b.Oracle(收费),关系数据库,SQL数据库c.SQLS......
  • 对象数据类型
      代码示例:<!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title></head><body><script>va......