如题所述
åèï¼
/**
* åå ¥ãæ´æ°CLOBå段ç代ç 示ä¾
*/
public void writeClob() {
//èªå®ä¹çæ°æ®åºè¿æ¥ç®¡çç±»ã
Connection conn = DbManager.getInstance().getConnection();
try {
conn.setAutoCommit(false);
// 1.è¿ç§æ¹æ³åå ¥CLOBå段å¯ä»¥ã
PreparedStatement stat = conn
.prepareStatement("insert into t_clob (id,clobfield) values(sys_guid(),?)");
String clobContent = "This is a very very long string";
StringReader reader = new StringReader(clobContent);
stat.setCharacterStream(1, reader, clobContent.length());
stat.executeUpdate();
// 2.使ç¨ç±»ä¼¼çæ¹æ³è¿è¡æ´æ°CLOBå段ï¼åä¸è½æåã
// stat.close();
// stat =null;
// stat =
// conn.prepareStatement("update t_clob set clobfield=? where id=1");
// stat.setCharacterStream(1, reader, clobContent.length());
// stat.executeUpdate();
// 3.éè¦ä½¿ç¨for updateæ¹æ³æ¥è¿è¡æ´æ°ï¼
// ä½æ¯ï¼ç¹å«éè¦æ³¨æï¼å¦æåæ¥CLOBå段æå¼ï¼éè¦ä½¿ç¨empty_clob()å°å ¶æ¸ 空ã
// å¦æåæ¥æ¯nullï¼ä¹ä¸è½æ´æ°ï¼å¿ é¡»æ¯empty_clob()è¿åçç»æã
stat = conn
.prepareStatement("select clobfield from t_clob where id='1' for update");
ResultSet rs = stat.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
.getClob("clobfield");
Writer outStream = clob.getCharacterOutputStream();
char[] c = clobContent.toCharArray();
outStream.write(c, 0, c.length);
outStream.flush();
outStream.close();
}
conn.commit();
} catch (SQLException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DbManager.getInstance().closeConnection(conn);
}
/**
* åå ¥ãæ´æ°CLOBå段ç代ç 示ä¾
*/
public void writeClob() {
//èªå®ä¹çæ°æ®åºè¿æ¥ç®¡çç±»ã
Connection conn = DbManager.getInstance().getConnection();
try {
conn.setAutoCommit(false);
// 1.è¿ç§æ¹æ³åå ¥CLOBå段å¯ä»¥ã
PreparedStatement stat = conn
.prepareStatement("insert into t_clob (id,clobfield) values(sys_guid(),?)");
String clobContent = "This is a very very long string";
StringReader reader = new StringReader(clobContent);
stat.setCharacterStream(1, reader, clobContent.length());
stat.executeUpdate();
// 2.使ç¨ç±»ä¼¼çæ¹æ³è¿è¡æ´æ°CLOBå段ï¼åä¸è½æåã
// stat.close();
// stat =null;
// stat =
// conn.prepareStatement("update t_clob set clobfield=? where id=1");
// stat.setCharacterStream(1, reader, clobContent.length());
// stat.executeUpdate();
// 3.éè¦ä½¿ç¨for updateæ¹æ³æ¥è¿è¡æ´æ°ï¼
// ä½æ¯ï¼ç¹å«éè¦æ³¨æï¼å¦æåæ¥CLOBå段æå¼ï¼éè¦ä½¿ç¨empty_clob()å°å ¶æ¸ 空ã
// å¦æåæ¥æ¯nullï¼ä¹ä¸è½æ´æ°ï¼å¿ é¡»æ¯empty_clob()è¿åçç»æã
stat = conn
.prepareStatement("select clobfield from t_clob where id='1' for update");
ResultSet rs = stat.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
.getClob("clobfield");
Writer outStream = clob.getCharacterOutputStream();
char[] c = clobContent.toCharArray();
outStream.write(c, 0, c.length);
outStream.flush();
outStream.close();
}
conn.commit();
} catch (SQLException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DbManager.getInstance().closeConnection(conn);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2016-04-03
oracle中最常用的varcher2类型最多只能存储4000个字节的内容,一般情况下是能够满足用户的需求的。
但是在一些特殊情况下(如要存储图片或者要存储的内容超过了4000个字节),varcher2就满足不了这个需求了。这个时候我们可以借助于oracle里面的大字段CLOB后者 BLOB。本回答被网友采纳
但是在一些特殊情况下(如要存储图片或者要存储的内容超过了4000个字节),varcher2就满足不了这个需求了。这个时候我们可以借助于oracle里面的大字段CLOB后者 BLOB。本回答被网友采纳