java操作Oracle的CLOB型別

2021-06-26 13:10:10 字數 3995 閱讀 9867

今天同事問我是否用過oracle中的clob型別,說實話-沒聽過。

oracle

中sql

語句中的兩個單引號之間的字元數不能大於

4000

的限制。

'"+ data + "' 

data

在sql語句之間,當data的值大於

4000

個位元組時

就會報錯。

oracle - 往有clob型別的表中插資料

1.其他字段照常插入,

clob型別字段

先插入"empty_clob()"值 (

)。2.把自動提交設為false,否則,再次查詢時就不能正確更新

2.然後使用帶有「for update」的查詢語句鎖定更新行。

3.最後例項化輸出流並對clob型別字段資料進行插入操作。

tips:

1.clob型別的空物件為empty_clob();

2.如果在插入前沒有將自動提交設為false會報  「fetch out of sequence」;

3.如果不加for   update會報:「row containing the lob value is not locked」;

關鍵**:

stringbuffer sqlstr = new stringbuffer();

"t.notice_status,t.sender,t.eff_date,t.exp_date,t.creater,t.create_time," +

"t.notice_content) values (");

string sql = sqlstr.tostring();

class.forname(driverclassname);

connection con = drivermanager.getconnection(url, username, password);

con.setautocommit(false);//設定不自動提交

preparedstatement pstmt = con.preparestatement(sql);

string content = notice.getnoticecontent().replace('\'', '\"');

try

pstmt = con.preparestatement("update notice set notice_content = ? where notice_id=?");//修改notice_content欄位的內容

pstmt.setclob(1, clob);

pstmt.setlong(2, notice.getnoticeid());

pstmt.executeupdate();

con.commit();

if (nps != null && nps.size() > 0)

} catch (exception e) finally

if(con!=null)

}

oracle - 查詢帶clob型別的資料,並把clob資料轉為string型別

關鍵**:

stringbuffer sqlstr = new stringbuffer();

"t.notice_status,t.sender,t.eff_date,t.exp_date,t.creater,t.create_time," +

"t.notice_content) values (");

string sql = sqlstr.tostring();

class.forname(driverclassname);

connection con = drivermanager.getconnection(url, username, password);

con.setautocommit(false);//設定不自動提交

preparedstatement pstmt = con.preparestatement(sql);

string content = notice.getnoticecontent().replace('\'', '\"');

try

pstmt = con.preparestatement("update notice set notice_content = ? where notice_id=?");//修改notice_content欄位的內容

pstmt.setclob(1, clob);

pstmt.setlong(2, notice.getnoticeid());

pstmt.executeupdate();

con.commit();

if (nps != null && nps.size() > 0)

} catch (exception e) finally

if(con!=null)

}

關鍵**:

型別轉換成string型別

public string clobtostring(clob clob)  catch (sqlexception e) 

// 得到流

bufferedreader br = new bufferedreader(is);

string s = null;

try catch (ioexception e)

stringbuffer sb = new stringbuffer();

while (s != null) catch (ioexception e)

}restring = sb.tostring();

return restring;

}

string

notice_content=clobtostring(rs.getclob("str"));

關鍵**:

stringbuffer sqlstr = new stringbuffer();

"t.notice_status,t.sender,t.eff_date,t.exp_date,t.creater,t.create_time," +

"t.notice_content) values (");

string sql = sqlstr.tostring();

class.forname(driverclassname);

connection con = drivermanager.getconnection(url, username, password);

con.setautocommit(false);//設定不自動提交

preparedstatement pstmt = con.preparestatement(sql);

string content = notice.getnoticecontent().replace('\'', '\"');

try

pstmt = con.preparestatement("update notice set notice_content = ? where notice_id=?");//修改notice_content欄位的內容

pstmt.setclob(1, clob);

pstmt.setlong(2, notice.getnoticeid());

pstmt.executeupdate();

con.commit();

if (nps != null && nps.size() > 0)

} catch (exception e) finally

if(con!=null)

}

匯出ORACLE表結構到SQL語句(含CLOB)

先用exp匯出空表 exp username password rows n file export.dmp tables rows n表示不匯出資料,如果沒有tables,預設匯出全部使用者表 然後用imp生成表定義檔案 imp username password rows n file expo...

oracle集合的操作

oracle關於集合的操作給我們提供了三個集合操作函式。並集 union 把兩個集合連線起來,同時去掉重複行,進行預設的排序 union all 把兩個集合拼起來,重覆記錄重複顯示,不進行排序 交集 intersect 求兩個集合的交集,進行預設排序 差集 minus 求兩個集合的差集,並預設排序 ...

oracle中表的操作

基本的建立就不說了,這裡說一些不常見的方法,表示很好用 通過子查詢建立表 通過子查詢建立新的圖書表。步驟1 完全複製圖書表到 圖書1 輸入並執行以下命令 create table 圖書1 as select from 圖書 步驟2 建立新的圖書表 圖書2 只包含書名和單價,輸入並執行以下命令 cre...