数据库在当今的应用越来越广泛了,同样伴随着领域的广泛,存储的内容也不在是只有数值、字符、boolean几种类型,而是越来越多样化。
以下是一个很简单的方法,插入一条含有clob类型字段的数据
public boolean addUser(){
String sql = "";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = this.getConnection();
stmt = conn.createStatement();
//关键的一条,oracle自带的一个empty_clob()空值函数
String insertSql = "insert into user (id,profile) values('1',EMPTY_CLOB());
//查出要插入的语句进行更新
String strSelectSql="select profile from user where id='1' FOR UPDATE";
//先改为手动提交事务
conn.setAutoCommit(false);
conn.commit();
stmt.execute(insertSql);
//得出要更新的数据
rs = stmt.executeQuery(strSelectSql);
if (rs.next()) {
CLOB clob1 = (CLOB) rs.getObject("Barriercontent");
WriteClob(clob1,"您要插入的profile内容到clob类型中,在这里写!");
}
rs.close();
conn.commit();
conn.setAutoCommit(true);
catch (Exception e) {
log.error("error/n" + e.getMessage());
return false;
} finally {
if (null != conn && !conn.isClosed()) {
conn.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
}
return true;
}
//照搬一个流输入的方法
@SuppressWarnings("deprecation")
public void WriteClob(CLOB clob, String Strwrite) {
try {
Writer wr = clob.getCharacterOutputStream();
wr.write(Strwrite);
wr.flush();
wr.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
大功告成!很简单吧,其实就是先插入一个空的empty_clob()函数,再用流写入进行更新而已。