Oracle中的Clob與String型別轉換

2021-04-20 09:55:59 字數 2404 閱讀 3850

在論壇上看到的乙個問題,其實我從來沒有用過clob,因為確實沒這個需求,但是為了搶分,如何最快的找到解決方案呢,第一時間想到spring,因為spring對orm工具有封裝, 像ibatis,hibernate等,在spring.jar中大概翻了一下包,根據包名和類名發現如下可疑類org.springframework.orm.ibatis.support.clobstringtypehandler 根據原始碼跟蹤到了 org.springframework.jdbc.support.lob.oraclelobhandler 這個類才是內有乾坤,有我想要的一切東西,嘿嘿,不好意思了,統統抄來.

在spring包中有個org.springframework.jdbc.support.lob.abstractlobhandler這裡面定義了基本的clob和blog處理方法

org.springframework.jdbc.support.lob.defaultlobhandler是預設的實現,除了oracle其他資料庫使用此實現

org.springframework.jdbc.support.lob.oraclelobhandler是專門用於oracle的實現,可見oracle的bt,為了不造成直接包依賴,相關的呼叫都是利用反射完成的.有興趣的朋友可以去閱讀下這兩個類,以便了解oracle的特殊性.

/***

* description:建立clob或者blob

** @param conn資料庫連線物件

* @param lobclassname

*            oracle.sql.clob或者oracle.sql.blob

* @return oracle.sql.clob或者oracle.sql.blob物件

* @throws exception

* @blog blog.csdn.ne t/sunyujia/

* @mail [email protected]

* @since:oct 1, 2008 6:42:08 pm

*/public

static object createoraclelob(connection conn, string lobclassname)

throws exception );

object lob = createtemporary.invoke(null, new object );

method open = lobclass.getmethod("open", new class );

open.invoke(lob, new object );

return lob;

}/**

** description:將clob物件轉換為string物件,blob處理方式與此相同

** @param clob

* @return

* @throws exception

* @mail [email protected]

* @blog blog.csdn.ne t/sunyujia/

* @since:oct 1, 2008 7:19:57 pm

*/public

static string oracleclob2str(clob clob) throws exception 

/***

* description:將string物件轉換為clob物件,blob處理方式與此相同

** @param str

* @param lob

* @return

* @throws exception

* @mail [email protected]

* @blog blog.csdn.ne t/sunyujia/

* @since:oct 1, 2008 7:20:31 pm

*/public

static clob oraclestr2clob(string str, clob lob) throws exception 

/***

* description: 全部原始碼查考自

* org.springframework.jdbc.support.lob.oraclelobhandler

** @param args

* @throws exception

* @mail [email protected]

* @blog blog.csdn.ne t/sunyujia/

* @since:oct 1, 2008 7:26:16 pm

*/public

static

void main(string args) throws exception 

sqlutil.closers(rs);

sqlutil.closestmt(stmt);

sqlutil.closeconn(conn);

}

oracle中clob欄位的使用

一 在hibernate.cfg.xml檔案中加乙個property屬性標籤 org.hibernate.dialect.oracle10gdialect oracle.jdbc.driver.oracledriver jdbc oracle thin 17 1 8.1.7 1521 orcl bb...

oracle中clob型別的使用

oracle資料庫當需要存入大資料量 大於4000 時,varchar2不夠用,可以使用clob,本文描述clob怎麼和hibernate一起使用。以公告notice的公告內容noticecontent為例說明 notice表notice content欄位為clob型別 notice類的notic...

spring中存oracle的clob型別資料

最近把乙個基於mysql的功能改為基於oracle中,出現了字元過長 ora 07104 字串文字太長 的錯誤。如果直接以平常sql語句來插入我們的文字,文字內容不能超過4000個字元 update sp type set sp html 文字內容 mysql的longtext就相當於oracle的...