JAVA中如何知道某项目使用什么数据库类型

文章目录

  • [1. 前言](#1. 前言)
  • [2. 先说结论](#2. 先说结论)
  • [3. 代码案例](#3. 代码案例)

1. 前言

  1. 最近在写第三方工具的时候,需要判断使用方项目具体使用了什么数据库类型,从而进行不一样的实现逻辑
  2. 当然可以让用户在YML中配置说明项目用什么数据库,但用户不一定填写正确。
  3. 因此需要想其他办法获取到该项目使用什么数据库类型。

2. 先说结论

  1. 在JDBC中其实有个东西叫DatabaseMetaData数据库源

  2. 其是由JDBC驱动程序实现的,用于提供底层数据源相关的信息。因此可以使用DatabaseMetaData接口提供的方法获取数据源信息。

  3. 可以获取到数据库是什么类型, 如下:

    java 复制代码
    DatabaseMetaData metaData = dataSource.getConnection().getMetaData();
    String dbType = metaData.getDatabaseProductName();

3. 代码案例

  1. 直接代码演示即可,DatabaseMetaData数据库源其实就提供底层数据源相关的信息,需要什么东西,从这里获取即可:

    java 复制代码
    @Component
    public class test {
    
        @Autowired
        private DataSource dataSource;
        
        @Scheduled(fixedRate = 5000)
        public void test3() throws Exception{
            DatabaseMetaData databaseMetaData = dataSource.getConnection().getMetaData();
            System.out.println("数据库URL:" + databaseMetaData.getURL());
            System.out.println("数据库用户名:" + databaseMetaData.getUserName());
            System.out.println("数据库产品名:" + databaseMetaData.getDatabaseProductName());
            System.out.println("数据库产品版本:" + databaseMetaData.getDatabaseProductVersion());
            System.out.println("数据库SQL关键字:" + databaseMetaData.getSQLKeywords());
        }
     }
相关推荐
二哈赛车手2 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
栗子~~3 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8293 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
星星也在雾里3 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
未若君雅裁4 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
AI人工智能+电脑小能手5 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
阿维的博客日记5 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
雨辰AI5 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20245 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有6 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql