记一次因Oracle数据库版本不同导致的查询结果集中字符串类型的数据全部返回了空字符的问题

问题说明

公司一个远古项目需要重构,生产的数据库项目比较久远,生成环境下的使用的Oracle数据库版本为9.2.0.4.0-64bit Production。而公司现在开发测试用的Oracle数据库版本已经到了 11.2.0.1.0-64bit Production。
所以,在本地对项目进行重构的时候,新搭建的项目框架使用的Oracle驱动版本为ojdbc7-11.2.0,具体maven依赖如下:

<groupId>com.oracle</groupId>
	<artifactId>ojdbc7</artifactId>
	<version>11.2.0</version>
</dependency>

在连接公司的测试数据库测试的时候,一切正常。等切换到生产环境的时候,通过日志发现,所有的数据库表中只要数据类型是varchar2类型的列,只要有值的,返回的结果均为空字符串""。而数据类型是varchar2类型的列,没值的,能正常返回null,date类型的也能正常返回日期的值。
即便是通过原生jdbc连接,取结果集(ResultSet),遍历结果集元数据(ResultSetMetaData)的每一列,依旧存在这个问题。

解决

最终,通过对比这个项目的旧版代码发现,旧代码的Oracle驱动版本为ojdbc6-11.2.0.1.0,然后再测试生产环境就没问题了。具体maven依赖如下:

<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>11.2.0.1.0</version>
</dependency>

这个版本的驱动在maven库中找不到的话,下载地址在这里
如果你觉的这篇文章对你有帮助,请点赞收藏。
另外,我有一个公众号,有兴趣的可以关注一下
公众号:code writer

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值