当前位置: 首页 > article >正文

druid连接gbase8s数据库报错空指针

在使用druid 1.2.17以及之后版本中,在连接gbase8s数据库时报错空指针

java.lang.NullPointerException
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1764)
    at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:939)
    at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1463)
    at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1459)
    at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:83)

原因在获取数据库类型(dbTypeName)时不支持gbase8s数据库,导致获取类型为null,然后在createPhysicalConnection 中构建数据库连接时直接使用dbTypeName.equals做判断,导致此处空指针,异常传递到上层最终报错空指针

else if (dbTypeName.equals(DbType.sqlserver.name())) {

个人觉得这块代码处理的不太合适,如果要限制数据库类型可以有很多地方或者办法能处理,在前边获取到 dbTypeName =null 就应该给出日志结束调用,而不是在后边突兀的一个空指针异常

解决方案

1 在com.alibaba.druid.util.JdbcUtils的getDriverClassName方法中加入gbase8s支持

else if (rawUrl.startsWith("jdbc:gbasedbt-sqli:")) {
            return "com.gbasedbt.jdbc.Driver";
        }

2 在com.alibaba.druid.util.JdbcUtils的getDbTypeRaw方法加入gbase8s支持

else if (rawUrl.startsWith("jdbc:gbasedbt-sqli:") ) {
            return DbType.gbase8s;
        }

3 在com.alibaba.druid枚举类 DbType 中加入gbase8s支持

gbase8s(0);


http://www.kler.cn/a/302803.html

相关文章:

  • 如何保证Redis与MySQL双写一致性
  • 浅谈“通感一体”
  • 从0学习React(11)
  • ABAP关于PS模块CJ20N中项目物料的屏幕和字段增强CI_RSADD
  • 第四十五章 Vue之Vuex模块化创建(module)
  • SHA-256哈希函数
  • vue2 组件通信
  • MySql Index索引使用注意
  • 数据分析-13-时间序列异常值检测的类型及常见的检测方法
  • 专题三_二分查找算法_算法详细总结
  • Jmeter之beanshell使用
  • 适合博客的组件库
  • RHEL 7 安装配置( Linux 网络操作系统 02)
  • 【智能流体力学】数值模拟中的稳态和瞬态
  • OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植指南(二)
  • C#多线程进阶
  • Java面试题·解释题·单例模式、工厂模式、代理模式部分
  • 基于Qt的串口包装器
  • 【SqlServer】SQL Server Management Studio (SSMS) 下载、安装、配置使用及卸载——保姆级教程
  • 数学建模笔记—— 最大最小化规划模型
  • mysql——关于表的增删改查(CRUD)
  • macOS镜像下载(ISO、DMG)
  • xss-labs-master通关教程
  • 起重机检测系统源码分享
  • 【C++11 —— 包装器】
  • 【Sceneform-EQR】通过sceneform-eqr实现一个视频播放器(使用安卓MediaPlayer实现视频播放)