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());
        }
     }
相关推荐
大迪deblog几秒前
系统架构设计-Redis设计-缓存穿透、缓存击穿、缓存雪崩
数据库·redis·系统架构
2401_867623981 分钟前
HTML5中SVG解析器原理及手动构建矢量字符串
jvm·数据库·python
skilllite作者3 分钟前
GEO 是什么:从搜索引擎到「对话式答案」的信息可见性
java·前端·笔记·安全·搜索引擎·agentskills
老纪3 分钟前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python
weixin_459753944 分钟前
Vue.js响应式shallowReadonly实现对象属性的一层状态保护
jvm·数据库·python
m0_470857644 分钟前
uni-app怎么实现拖拽调整顺序 uni-app可拖动格子布局实现【技巧】
jvm·数据库·python
深蓝易网4 分钟前
工厂目视化实操手册,告别形式主义
运维·网络·数据库·人工智能·汽车
dFObBIMmai5 分钟前
MySQL如何利用存储过程封装权限_通过DEFINER与INVOKER模式控制
jvm·数据库·python
是宇写的啊6 分钟前
SpringBoot 统一功能处理
java·spring boot·后端
m0_748554816 分钟前
如何用 stopPropagation 阻止事件冒泡防止触发父级回调
jvm·数据库·python