lob類型分為blob和clob兩種:blob即二進制大型對象(binary large object),適用于存貯非文本的字節流數據(如程序、圖象、影音等)。而clob,即字符型大型對象(character large object),則與字符集相關,適于存貯文本型的數據(如歷史檔案、大部頭著作等)。
下面以程序實例說明通過jdbc操縱oracle數據庫lob類型字段的幾種情況。
先建立如下兩個測試用的數據庫表,power designer pd模型如下:
建表sql語句為:
create table test_clob ( id number(3), clobcol clob)
create table test_blob ( id number(3), blobcol blob)
一、 clob對象的存取
1、往數據庫中插入一個新的clob對象
public static void clobinsert(string infile) throws exception
{
/* 設定不自動提交 */
boolean defaultcommit = conn.getautocommit();
conn.setautocommit(false);
try {
/* 插入一個空的clob對象 */
stmt.executeupdate("insert into test_clob values ('111', empty_clob())");
/* 查詢此clob對象并鎖定 */
resultset rs = stmt.executequery("select clobcol from test_clob where id='111' for update");
其它類型的字段修改時,用update … set…命令即可。而lob類型字段,則只能用select … for update命令將記錄查詢出來并鎖定,然后才能修改。且修改也有兩種改法:一是在原數據基礎上的修改(即覆蓋式修改),執行select … for update后再改數據;二是替換(先將原數據清掉,再修改),先執行update命令將lob字段之值設為空的lob對象,然后進行第一種改法。建議使用替換的方法,以實現與其它字段update操作后一樣的效果。