Oracle Package返回游标和Java调用,ClassCastException的解决方法
2008-04-18 11:06
483 查看
创建测试oracle包:
下面是jdbc代码的调用。
当然如果采用jdbc直接获得Connection下面的代码是没问题的。
但是,如果采用连接池(比如:采用Weblogic或jboss等web服务器自带的连接池) 哈哈,这段代码就会让你头疼了。不信你试试。抛出CastClassException 哈哈。
java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.WrappedConnection cannot be cast to oracle.jdbc.OracleConnection。
下面是另一种写法,保你没事。这种写法风水好。哈哈
CallableStatement cs = null;
cs = conn.prepareCall(sql);
cs.setInt(1,maxrow);
cs.setInt(2,minrow);
cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet)cs.getObject(3);
差别很简单。
可以看看weblogic和jboss实现连接池的代码就知道了。
一路ok了。
摘自:http://hi.baidu.com/icysunshine/blog/item/f6837df8b926fd0cd8f9fd52.html
create or replace package pkg_test astype t_ref is ref cursor; procedure p_test(cur_ref out t_ref);end pkg_test; create or replace package body pkg_test asprocedure p_test(cur_ref out t_ref) isbeginopen cur_ref for 'select * from test'; end p_test;end pkg_test;/
下面是jdbc代码的调用。
当然如果采用jdbc直接获得Connection下面的代码是没问题的。
oracle.jdbc.OracleCallableStatement cs = null; String sqlStr = "{call firstpage.getSeniorHighSchool(?,?,?)}"; ResultSet rs = null;try{cs = (oracle.jdbc.OracleCallableStatement)conn.prepareCall(sqlStr); cs.setLong(1,arg[0]); cs.setLong(2,arg[1]); cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR); cs.execute();rs = cs.getCursor(3); while(rs.next()){//...........}rs.close(); cs.close();}catch(Exception e){System.out.println("produce error "); e.printStackTrace();}
但是,如果采用连接池(比如:采用Weblogic或jboss等web服务器自带的连接池) 哈哈,这段代码就会让你头疼了。不信你试试。抛出CastClassException 哈哈。
java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.WrappedConnection cannot be cast to oracle.jdbc.OracleConnection。
下面是另一种写法,保你没事。这种写法风水好。哈哈
CallableStatement cs = null;
cs = conn.prepareCall(sql);
cs.setInt(1,maxrow);
cs.setInt(2,minrow);
cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet)cs.getObject(3);
差别很简单。
可以看看weblogic和jboss实现连接池的代码就知道了。
一路ok了。
摘自:http://hi.baidu.com/icysunshine/blog/item/f6837df8b926fd0cd8f9fd52.html
相关文章推荐
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- jsp异常:org.apache.jasper.JasperException: java.lang.ClassCastException三种解决方法
- java.lang.ClassCastException: org.apache.struts.action.RequestProcessor解决方法!
- 解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String错误的解决方法
- :org.apache.jasper.JasperException: java.lang.ClassCastException三种解决方法
- jsp异常:org.apache.jasper.JasperException: java.lang.ClassCastException三种解决方法
- Hadoop中java.lang.ClassCastException: partition解决方法
- Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常
- 百度地图开发中的java.lang.ClassCastException解决方法及定位源码
- Android 用axis2 webService产生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive错误的解决方法
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 异常 java.lang.ClassCastException:cannot be cast to android.widget.HeaderViewListAdapter.的解决方法
- java.lang.ClassCastException:java.lang.ClassCastException: android.view.AbsSavedState$1..解决方法
- jsp异常:org.apache.jasper.JasperException: java.lang.ClassCastException三种解决方法
- Hibernate java.lang.ClassCastException ERROR解决方法
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法