oracle大欄位BLOB讀取,轉換異常

來源:互聯網
上載者:User

在讀取oracle資料庫中的大欄位blob欄位時,
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob(1);
發生java.lang.ClassCastException: oracle.sql.CLOB 異常

異常資訊:
java.lang.ClassCastException: oracle.sql.BLOB
at mdx.DB.updateClob(DB.java:116)
at org.apache.jsp.processEditBidItem_jsp._jspService(org.apache.jsp.processEditBidItem_jsp:174)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:319)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
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 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:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
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)

剛開始都以為真的是類型轉換異常,後面加了一句列印轉換前的類型
System.out.println(rs.getBlob(1).getClasss());
列印出來的結果是oracle.sql.BLOB,

後面又懷疑是驅動包的問題,把原來的class12.jar的驅動包換成了oracle10.2.0.1版本的驅動包ojdbc14.jar,
也沒有解決問題

問題解決方案:

最後覺得是不是驅動包重複了,
就在tomcat的common/lib目錄下面找到相應的驅動包,而應用程式中也有相應的驅動包,只能刪除其中一個來試,
因為common/lib/目錄下面的驅動包是給tomcat建立jndi資料來源時用的,故不能刪除,只能刪除應用程式中的包,但刪除後又會導致程式編譯不通過,這時就通過eclilpse的-build path進行外部參考,使用應用程式編譯通過,但也不會把ojdbc14.jar的驅動包引入到發布目錄,再試,果然解決了問題。

 

 

本文轉自:http://blog.javauu.com/2009/03/235.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.