jdbc连oracle数据库发现的两个问题,类型长度大于最大值和不允许进行此操作

昨晚加今上午在研究一个问题,就是jdbc连不上存储过程返回的ref cursor。现在终于弄好了,找出失败的原因有两个:
1)类型长度大于最大值:在工程中点右键选择jar文件,换了很多版本的oracle jdbc driver都没用,原因就是在web目录下有个Lib文件夹,我之前把classes12.jar拷贝到该目录下了,尽管在工程中引用了外部ojdbc14.jar文件,但是tomcat默认还是从自己的lib目录下去运行,所以换了很多jar文件都只是表面现象,实际上还是没换。在编写非web程序运行成功后,于是想到了是tomcat的问题,找到了web的lib文件夹下,遂把classes12.jar删除即可正常运行了。类型长度大于最大值这个错误的根本原因就是oracle jdbc driver的驱动和数据库版本不匹配,到oracle的网站下载服务器端相同版本的jdbc driver就不会有问题的。
2)不允许进行此操作:老是提示这个错误,后来发现原因是注册的输出参数要和获得的输出参数同方法,要么都用索引设置,要么都用名称设置。代码如下:
正确方法1:
proc.registerOutParameter("P_RESULT",oracle.jdbc.OracleTypes.CURSOR);
proc.execute();   
p_return = (ResultSet) proc.getObject("P_RESULT");
正确方法2:
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();   
p_return = (ResultSet) proc.getObject(1);
错误方法1:
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();   
p_return = (ResultSet) proc.getObject("P_RESULT");
错误方法2:
proc.registerOutParameter("P_RESULT",oracle.jdbc.OracleTypes.CURSOR);
proc.execute();   
p_return = (ResultSet) proc.getObject(1);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值