连接文件
InitialContext initialContext = new InitialContext();
Context context = (Context) initialContext.lookup("java:comp/env");
//The JDBC Data source that we just created
DataSource ds = (DataSource) context.lookup("connpool");
this.con = ds.getConnection();
this.des=ArrayDescriptor.createDescriptor("ARRAY_INT",this.con);
System.out.println("in set array1");
this.arr_to_pass=new ARRAY(this.des,this.con,arr);
this.csmt.setArray(index, this.arr_to_pass);
但是我得到了以下异常
java.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp2.PoolingDataSource $ PoolGuardConnectionWrapper无法强制转换为oracle.jdbc.OracleConnection
答案 0 :(得分:0)
我猜ClassCastException
被抛到这一行
this.con = ds.getConnection();
您的代码未显示this.con
的类型,但必须是OracleConnection
。你不能这样做,因为connection是一个包装的dbcp连接。
如果要使用Oracle Connection,则必须先使用BasicDataSource.unwrap(Class<T> iface)
将其解包。您之前也可以使用BasicDataSource.isWrapperFor(Class<?> iface)
来检查包装的连接是否为Oracle Connection类型,以避免出现异常:)
例如:
if (ds.getConnection().isWrapperFor(OracleConnection.class)) {
this.con = ds.getConnection().unwrap(OracleConnection.class);
}
答案 1 :(得分:0)
如果出现以下错误,请确保您已与数据库建立连接
java.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper无法在以下位置强制转换为oracle.jdbc.OracleConnection
如果没有连接,则可能会出现此错误。