这是异常 java.lang.ClassCastException: oracle.sql.BLOB at struts.action.PhotoAction.execute(PhotoAction.java:151) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at struts.form.FilterEncoding.doFilter(FilterEncoding.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
select image from dzjc_image1 确认数据库吧!image 是否为Blob类型的 2 建议你这样看看 Object o = rs.getBlob("image"); System.out.println(o); // 我们来看看他到底是啥!哈哈哈! 也许你的连接池搞了手脚呢!
太奇怪了,既然类型正确,怎么可能转化失败呢?? 我们再测试一下 Object o = rs.getBlob("image"); System.out.println(o); oracle.sql.BLOB blob= null; if(o instanceof oracle.sql.BLOB) { System.out.println("It is a oracle.sql.BLOB"); blob = (oracle.sql.BLOB)o; System.out.println("Cast OK"); }else { System.out.println("It is NOT a oracle.sql.BLOB"); }[/code]
昨天没上班,请假了if(o instanceof oracle.sql.BLOB)测试跳到else里了 用连接池测试输出结果是这样的 oracle.sql.BLOB@122e0b3 It is NOT a oracle.sql.BLOB ======================================================== 用直连就正常 直连的是这样的 oracle.sql.BLOB@5eb748 It is a oracle.sql.BLOB Cast OK
java.lang.ClassCastException: oracle.sql.BLOB
at struts.action.PhotoAction.execute(PhotoAction.java:151)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at struts.form.FilterEncoding.doFilter(FilterEncoding.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2 建议你这样看看
Object o = rs.getBlob("image");
System.out.println(o); // 我们来看看他到底是啥!哈哈哈! 也许你的连接池搞了手脚呢!
老紫竹
等 级:
发表于:2008-02-01 14:42:433楼 得分:0
select image from dzjc_image 1 确认数据库吧!image 是否为Blob类型的
2 建议你这样看看 Java codeObject o = rs.getBlob("image");
System.out.println(o); // 我们来看看他到底是啥!哈哈哈! 也许你的连接池搞了手脚呢
------------------------------------------
1 我确定是blob型
2 输出来的是 oracle.sql.BLOB@45484a
=========================================================================
yccn1314
貌似oracle的blob字段不能用jdbc连接池连接,必须用oracle提供的连接
----------------------------------
可以用的,但是据说是用JDBC 3.0就可以通过
oracle提供的连接该怎么用?
我们再测试一下
Object o = rs.getBlob("image");
System.out.println(o);
oracle.sql.BLOB blob= null;
if(o instanceof oracle.sql.BLOB) {
System.out.println("It is a oracle.sql.BLOB");
blob = (oracle.sql.BLOB)o;
System.out.println("Cast OK");
}else {
System.out.println("It is NOT a oracle.sql.BLOB");
}[/code]
用连接池测试输出结果是这样的
oracle.sql.BLOB@122e0b3
It is NOT a oracle.sql.BLOB
========================================================
用直连就正常
直连的是这样的
oracle.sql.BLOB@5eb748
It is a oracle.sql.BLOB
Cast OK
你就用你自己的方法用吧。