java jdk7,jdk8连接oracle19C数据库ojdbc驱动

之前程序是连接的oracle11G数据库,由于11G官方不再维护,很多客户升级到了oracle19C,

导致程序连接报错

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第1张图片

我这边jdk为1.8 oracle jdbc驱动为


    com.oracle
    ojdbc14_g
    10.2.0.4.0

报错信息为java.sql.SQLException: ORA-28040: 没有匹配的验证协议

有一种解决方式为远程到oracle服务器,修改oracle服务端配置文件,改为兼容oracle11版本。

但是这种不大推荐,数据库服务器不是我们可以随便去远程,修改的,好多系统可能用一个实例。

所以修改数据库服务器配置的做法很多地方不适用。

1.jdk8程序连接oracle19C数据库

解决方法为升级orace jdbc驱动

修改pom文件ojdbc依赖为

 
            com.oracle.ojdbc
            ojdbc8
            19.3.0.0
  

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第2张图片

 我们发现更新pom后 ojdbc8-19.3.0.0.jar依赖引入了很多jar,具体哪些可以从ojdbc8-19.3.0.0.pom看到,这些依赖都是不能排除的。排除了可能数据库能连接上 查询字段时缺少转换报错等

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第3张图片

下面是我从oracle官方下载的jdk8 连接oracle19C 的jdbc驱动 jar集合,方便非maven结构项目使用。

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第4张图片

2.jdk7连接oracle19C数据库

另外需要注意的是 如果数据库是oracle11G,jdk7,jdk8都是使用oracle14G驱动就行,而如果是oracle19C ,jdk7和jdk8的驱动不一样的。

 jdk7的项目连接oracle19C数据库使用ojdbc7-12.1.0.2.jar驱动即可java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第5张图片

 对应的pom,注意是中央仓库的cn.easyproject包下,com.oracle下我好像没找到ojdbc7-12.1.0.2


  cn.easyproject
  ojdbc7
  12.1.0.2.0

3.报错Caused by: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

我这边pom跟新后启动可以,但是sql报错提示上诉错误,提示少了orai18n.jar

我查看ojdbc8-19.3.0.0.jar的pom有这个依赖的..

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第6张图片

查看依赖关系也没引入orai18n.jar

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第7张图片

查到原因是ojdbc8-19.3.0.0.jar的pom引入orai18n.jar时增加了true

导致不会依赖传递,但是这个这个pom我这边又不好改动 

java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第8张图片

解决方案是pom单独增加下该依赖,更新依赖,重启,sql执行成功

 java jdk7,jdk8连接oracle19C数据库ojdbc驱动_第9张图片

 
            com.oracle.ojdbc
            orai18n
            19.3.0.0
            true
    

后续又发现问题,maven clean mvn package打包时,orai18n.jar 没打包进去,项目引入该jar时也需要把true标签去掉,mvn package才会把该jar打包进去

 
            com.oracle.ojdbc
            orai18n
            19.3.0.0
 

4.最后附上jdbc驱动下载链接

jdk7_jdk8-oracle19C所需驱动.zip_jdk8的oracle驱动-互联网文档类资源-CSDN下载

你可能感兴趣的:(java,oracle19C,jdk8,oracle)