【问题标题】:Class cast exception with oracle.jdbc.driver.OracleConnectionoracle.jdbc.driver.OracleConnection 的类转换异常
【发布时间】:2012-05-19 12:06:27
【问题描述】:

下面代码的第一行出现异常

java.lang.ClassCastException:oracle.jdbc.internal.OracleConnection$$EnhancerByProxool$$3415e85 无法转换为 oracle.jdbc.driver.OracleConnection

如何将字符串转换为oracle.sql.Clob 以及如何使用PreparedStatement 插入。

// con is java.sql.Connection object
oracle.sql.CLOB newClob = oracle.sql.CLOB.createTemporary(con, false, oracle.sql.CLOB.DURATION_SESSION);

newClob.putString(1,transcript); 
pstmt.setClob(1, newClob);
pstmt.setString(2, StringUtils.dateToMillis(endTime));
pstmt.setString(3, sessionID);
int count = pstmt.executeUpdate();
System.out.println("updated count ::"+count);
System.out.println("transcript updated....");

【问题讨论】:

  • 问题似乎出在您包含的 sn-p 之前的代码中。你从哪里得到连接?此外,查看堆栈跟踪以找到导致问题的确切行。
  • 正是我只在第一行得到了异常......
  • transcript 是一个字符串(由 xml 数据组成),endtime 是 java.util.Date 对象,sessionID 是字符串)......当我尝试创建 clob 对象时,只有第一行的问题跨度>

标签: java jdbc


【解决方案1】:
Clob clob = connection.createClob();
clob.setString(1, transcript);

或者简单地使用 setClob() 方法将阅读器作为参数:

pstmt.setClob(1, new StringReader(transcript));

无需使用任何数据库专有类。 JDBC 应该是一个与数据库无关的抽象层。

【讨论】:

  • 它返回 java.sql.Clob 对象...是否会作为 CLOB 对象存储到数据库中
  • Clob 是一个接口。 Oracle JDBC 连接将返回此接口的 Oracle 实现。另请参阅我编辑的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 2018-10-02
相关资源
最近更新 更多