![](/img/trans.png)
[英]How to convert a CLOB type column to LONG type column in Oracle DB
[英]How to retrieve image from a CLOB column stored in Oracle DB
我想檢索作為CLOB存儲在Oracle DB中的base64映像。 為此,我嘗試了使用Worklight適配器從derby中檢索作為CLOB存儲的base64映像中提到的方法。
這里使用的驅動程序類是:oracle.jdbc.driver.OracleDriver。 使用的查詢:從table_name中選擇*;
適配器中的代碼:var clob = response.resultSet [0] .CLOB_COL; var bytes = clob.getSubString(1,clob.length());
錯誤:Ecma錯誤:TypeError:在對象oracle.sql.CLOB中找不到函數getSubString。
TLDR: oracle.sql.CLOB
與java.sql.CLOB
不同。 您所指的站點談論的是第二種類型,但是您正在使用第一種。
從Oracle JDBC文檔中可以看到, oracle.sql.CLOB
類型沒有方法getSubString
或getBytes
。
但是, java.sql.CLOB
具有您要查找的getSubString
方法,如doc中所示 。 即使它們看起來很相似,它們還是來自不同庫的不同類型。 然后,您需要使用Oracle api中的toJdbc
方法將Oracle CLOB轉換為Java CLOB。 返回的對象將具有您需要的getSubString
方法。
因此,從技術上講,這應該可行:
var clob = response.resultSet[0].CLOB_COL.toJdbc(); // Oracle -> Java
var bytes = clob.getSubString(1, clob.length());
為了完整性進行編輯 :您還對getBytes
方法感到困惑,該方法僅存在於java.sql.BLOB
。 BLOB和CLOB以及不同的類型也是如此。 對所有類型和庫要特別小心。 它們看起來都一樣,但是都有自己的API。 特別是當您從網絡上獲取代碼片段時,您確實需要知道您使用的是哪種類型。
您可以直接在ResultSet對象上調用getString()
,然后在Java中執行從BASE64到二進制的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.