JDBC API 4.2(十):DatabaseMetaData 接口源码分析「建议收藏」

JDBC API 4.2(十):DatabaseMetaData 接口源码分析「建议收藏」1、简介DatabaseMetaData接口提供了获取数据库元数据的方法,例如数据库名称,数据库版本,驱动程序名称,表总数,视图总数等。该接口由驱动程序供应商实现,以使用户了解数据库管理系统(DBMS)的功能以及与之结合使用的基于JDBC技术的驱动程序。不同的DBMS通常支持不同的功能,以不同的方式实现功能以及使用不同的数据类型。另外,驱动程序可以在DBMS提供的功能之上实现功能。该接…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1、简介

DatabaseMetaData 接口提供了获取数据库元数据的方法,例如数据库名称,数据库版本,驱动程序名称,表总数,视图总数等。

该接口由驱动程序供应商实现,以使用户了解数据库管理系统(DBMS)的功能以及与之结合使用的基于JDBC技术的驱动程序。

不同的DBMS通常支持不同的功能,以不同的方式实现功能以及使用不同的数据类型。 另外,驱动程序可以在DBMS提供的功能之上实现功能。 该接口中方法返回的信息适用于特定驱动程序和特定DBMS协同工作的功能。

一些 DatabaseMetaData 方法采用的参数是字符串模式。 这些参数都具有诸如fooPattern之类的名称。 在模式字符串中,“%”表示匹配任何0个或多个字符的子字符串,“ _”表示匹配任何一个字符。 仅返回与搜索模式匹配的元数据条目。 如果将搜索模式参数设置为null,则将从搜索中删除该参数的条件。

2、常用方法

方法 描述
String getDriverName() throws SQLException 返回 JDBC driver 名称
String getDriverVersion() throws SQLException 返回 JDBC driver 版本
String getUserName()throws SQLException 返回数据库用户名
String getDatabaseProductName() throws SQLException 返回数据库产品名称
String getDatabaseProductVersion()throws SQLException 返回数据库产品版本
ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException 检索满足指定条件的可用表的描述。

3、示例

public class DatabaseMetaDataDemo {
    public static void main(String[] args) {
        databaseInfo();
    }

    private static void databaseInfo() {      
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/lkf_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT", "root", "root");) {
            DatabaseMetaData dbmd = connection.getMetaData();
            System.out.println("Driver Name: " + dbmd.getDriverName());
            System.out.println("Driver Version: " + dbmd.getDriverVersion());
            System.out.println("UserName: " + dbmd.getUserName());
            System.out.println("Database Product Name: " + dbmd.getDatabaseProductName());
            System.out.println("Database Product Version: " + dbmd.getDatabaseProductVersion());
        } catch (SQLException e) {
            printSQLException(e);
        }
    }

    public static void printSQLException(SQLException ex) {
        for (Throwable e: ex) {
            if (e instanceof SQLException) {
                e.printStackTrace(System.err);
                System.err.println("SQLState: " + ((SQLException) e).getSQLState());
                System.err.println("Error Code: " + ((SQLException) e).getErrorCode());
                System.err.println("Message: " + e.getMessage());
                Throwable t = ex.getCause();
                while (t != null) {
                    System.out.println("Cause: " + t);
                    t = t.getCause();
                }
            }
        }
    }
}

Jetbrains全家桶1年46,售后保障稳定

输出:

Driver Name: MySQL Connector/J
Driver Version: mysql-connector-java-8.0.15 (Revision: 79a4336f140499bd22dd07f02b708e163844e3d5)
UserName: root@localhost
Database Product Name: MySQL
Database Product Version: 8.0.17
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223409.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2022年N1叉车司机考试模拟100题及模拟考试

    2022年N1叉车司机考试模拟100题及模拟考试题库来源:安全生产模拟考试一点通公众号小程序2022N1叉车司机试题为N1叉车司机培训试题理论知识考试题库!2022年N1叉车司机考试模拟100题及模拟考试依据N1叉车司机考试教材。N1叉车司机全部考试题库随时根据安全生产模拟考试一点通上练习全部题库。1、【多选题】《中华人民共和国特种设备安全法》第八十四条规定,特种设备使用单位的特种设备存在严重事故隐患,无改造、修理价值,或者达到安全技术规范规定的其他报废条件,未依法履行报废义务,并办理使用登记证书注销手续的。责令停止使用有关特种设备,处()以

    2022年9月6日
    6
  • NFV指的是_以致和以至的区别

    NFV指的是_以致和以至的区别这几年由于网路虚拟化技术的快速发展,很多网元设备都从传统的特定硬件转到通用硬件上的软件形态,那NFV和VNF这两个概念是有什么区别呢?NFV指网路功能虚拟化技术,通过IT虚拟化,实现传统通信网络的功能;VNF就是虚拟出来的一个个网元,实现某个网络功能单元,NF;NFV发展分为初级和高级阶段;初级阶段是基于传统硬件的软件执行环境转换为基于通用硬件的VM的专用虚拟化环境…

    2022年9月6日
    5
  • 史上最全 PyCharm(Mac+Windows版) 快捷键整理,建议收藏备用「建议收藏」

    史上最全 PyCharm(Mac+Windows版) 快捷键整理,建议收藏备用「建议收藏」PyCharm应该是最常用的Python编辑器之一了,今天整理了一份PyCharm快捷键大全,包含了Mac和Windows版本,建议收藏备用。Mac版快捷键大全符号说明…

    2022年8月27日
    5
  • Project interpreter not specified(eclipse+pydev)

    Project interpreter not specified(eclipse+pydev)

    2021年11月24日
    42
  • ajax发送异步请求四个步骤,深入理解ajax异步请求的五个步骤(详细代码)

    ajax发送异步请求四个步骤,深入理解ajax异步请求的五个步骤(详细代码)在前端工作中,经常会用到ajax,其实很多人只知道ajax是异步请求,不知道应该如何用它,它的基本步骤有哪些,ajax请求过程是怎样的?接下来这篇文章就给大家介绍Ajax的请求步骤,以及ajax请求步骤的详细代码。感兴趣的朋友可以看看。AJAX(AsynchronousJavaScriptandXML):是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX…

    2022年5月13日
    49
  • 手机窃听讲话推送广告_智能手机窃听原理

    手机窃听讲话推送广告_智能手机窃听原理近日有媒体报道称,“窃听风云再次上演,一条短信实现窃听”,文中“记者卧底、售价2000元、可跟踪用户GPS位置”等等字眼处处可见。所谓的“X卧底”真有这么神奇?瑞星安全专家表示,所谓X卧底不过是“手机木马加录音软件”混合体,并没有新闻中所说的那么神奇。安全专家表示,所谓的“X卧底”本质上是一款手机木马,通常不会主动传播,而是由使用者的亲密接触者(妻子、丈夫等)手工安装,安装之后没有任何主界

    2022年9月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号