簡體   English   中英

為什么我不能從本機java Blob中轉換oracle BLOB

[英]Why I cannot cast oracle BLOB from native java Blob

我正在從ResultSet中讀取文件,並且需要將文件保存到Oracle數據庫中。

...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();

我收到此錯誤消息

java.lang.ClassCastException

任何人都有解決方案嗎? 謝謝!

我找到了解決方案。 我想與那些有這個問題的人分享。

從oracle blob獲取輸出流的代碼是:

java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);

setBinaryStream()實際上是返回java.io.OutputStream對象

java.sql.Blob 是一個接口 據推測, ResultSet返回的實現是與oracle.sql.BLOB不同的實現?

myfile.getClass()返回什么?

你似乎沒有oracle.sql.BLOB(如果你這樣做,它應該工作,BLOB實現Blob)。 ClassCastException是什么意思呢?

您使用的是哪個版本的Oracle以及哪個版本的JDBC驅動程序?

無論如何都不推薦使用getBinaryOutputStream ,你應該在JDBC(3.0)接口中使用setBinaryStream ,這可能根本不需要去Oracle的內部類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM