我正在尝试使用oracle服务器的dbcp框架建立连接池。我将此tutorial用于连接。问题是使用以下连接创建OraclePreparedStatement:
Connection oracleCon; OraclePreparedStatement o_stmt; String sql = "INSERT INTO T002_metadata (T002_datacitexml,T002_version, T002_active) VALUES (?,?,?) RETURNING T002_id INTO ?"; oracleCon = ConnectionManager.ds.getConnection(); o_stmt = ((OraclePreparedStatement) oracleCon.prepareStatement(sql));
执行此操作后,将引发异常。
org.apache.commons.dbcp.DelegatingPreparedStatement cannot be cast to oracle.jdbc.OraclePreparedStatement
是否有可能发表声明?
我正在尝试使用oracle服务器的dbcp框架建立连接池。我使用本教程进行连接。问题是使用以下连接创建OraclePreparedStatement:...
不是Oracle类,不是。这就是JDBC的目的。这是一个API。仅使用java.sql.PreparedStatement。通过尝试向下转换,您违反了多态性并破坏了诸如此类的东西,其中一个库包装了真实的连接和语句以为您提供一些其他服务。
我今天遇到了同样的问题,并通过按建议的here更改Tomcat配置解决了该问题。我通过更改类型和工厂属性来更改context.xml
文件:
如果您使用的是Oracle,则可以将连接投射到OracleConnection,然后进行投射您准备好的对OraclePreparedStatement的语句。 jdbc的工作是将Oracle对象转换为标准sql对象,但它们仍然是Oracle sql对象。
我使用实用程序方法