数据库版本:DM V8 --03134283890-20220518-160920-10045 Pack6(DM V8 1-2-114)
Dmjdbc驱动版本:2-114版本及之前
1、使用的数据库版本为DM V8 1-2-114及以后的版本(2022年2月及以后)
2、使用的DmJdbc驱动版本为DM V8 1-2-114及以前的版本
3、程序代码中使用了DmJdbc驱动自带的获取小版本号的方法(获取大版本号的方法正常)
以上三个条件全部满足才会出现该问题。
Java.lang.NumberFormatException:For input string:””
从报错信息来看,数值格式化时,由于获取到空字符串,导致报错。
相关方法为dm.jdbc.driver.DmdbDatabaseMetaData.do_getDatabaseMinorVersion、getDatabaseMinorVersion,该方法为Dmjdbc驱动自带的获取数据库小版本号的相关方法。通过反编译Dmjdbc驱动包查看相关方法,该方法通过SQL语句到数据库中查询相关版本号信息然后进行处理返回。
通过简单的验证发现在使用DM V8 --03134283890-20220518-160920-10045 Pack6即DM V8 1-2-114版本数据库时,使用2-114版本及之前版本带的DmJdbc驱动中的相关获取小版本的方法获取数据库小版本号信息会出现上面的报错。
具体的原因,应该是由于最新某个版本(2-114)开始数据库版本号信息命名规则发生变化,而对应版本自带的驱动未及时更新调整相关内置方法导致。该问题经过验证在最新DM V8 1-2-128版本的JDBC驱动中已解决。
方法一、使用DM V8 1-2-114之后的版本驱动,比如03134283904-20220714-165042-20005 该版本(DM V8 1-2-128)。
方法二、更换数据库版本为DM V8 1-2-114之前的版本。
方法三、不使用DmJdbc驱动自带的方法获取数据库小版本号,自己在代码中来实现。
文章
阅读量
获赞