java 插入 blob欄位 clob欄位

2021-06-26 15:48:08 字數 1544 閱讀 6692

1)clob型別的資料不能直接insert,要先通過empty_clob()方法給它分配乙個locator(同理,blob的用empty_blob()函式分配locator).然後把它select出來(此時它當然沒有資料,但結果集不是空的),得到乙個clob的物件,修改該物件的內容讓它滿足我們的需要,再通過update方法更新該行記錄. 

2) 通過select修改含lob型別的記錄時一定要鎖定該行(通過for update關鍵字實現),否則oracle會報錯. 

3) 剛插入的記錄就select for update, 會出現"違反讀取順序"錯誤,解決辦法是將自動提交功能置為false,即不允許自動提交,然後commit它,再select,就可以了!

下例是插入clob

public boolean addcase(case newcase)

string sql="insert into case(cid,cname,caddr,cdescribe,ctime) values(?,?,?,empty_clob(),?)";

ps=conn.preparestatement(sql);

ps.setint(1, cid);

ps.setstring(2, newcase.getcname());

ps.setstring(3, newcase.getcaddr());

ps.setstring(4, newcase.getctime());

int insertresult=ps.executeupdate();

conn.commit(); 

ps.clearparameters();

if(insertresult>0)

conn.commit();

conn.setautocommit(true);

return true;

}}catch(exception e)finally

return false;}

下例是插入blob

public void insertblob()

string sql2="insert into blobtest(bid,bname) values(?,empty_blob())";

ps = conn.preparestatement(sql2);

ps.setint(1,fid);

int i=ps.executeupdate();

system.out.println("執行了更新:"+i);

conn.commit();

string sql3="select bname from blobtest where bid = ? for update";

ps = conn.preparestatement(sql3);

ps.setint(1,fid);

rs = ps.executequery();

if(rs.next())

conn.commit();

conn.setautocommit(true);

} catch (exception e) finally

}

blob欄位型別

blob的定義 blob binary large object 二進位製大物件,是乙個可以儲存二進位制檔案的容器。在計算機中,blob常常是資料庫中用來儲存二進位制檔案的字段型別。根據eric raymond的說法,處理blob的主要思想就是讓檔案處理器 如資料庫管理器 不去理會檔案是什麼,而是關...

BLOB欄位操作

置為空或null update blob test set b content null update blob test set b content empty blob 判斷內容不為空 select from blob test where dbms lob.getlength b conten...

mysql操作BLOB欄位

平常的sql語句,大都是乙個字串,而blob是字串無法表示的 這就需要另一種方式來執行語句,即stmt,理論上適合任意sql語句 初始化 mysql stmt init 解析sql語句 mysql stmt prepare 例 update x set y 待確定欄位用問號表示 驗證待確定字段數量 ...