发布网友
共3个回答
热心网友
猪哥解答:
呵呵,从你的代码里没看出大问题,你遇到的那个问题出现的情况通常是:在事务里的不同地方对同一个表的同一条数据进行update操作。
而解决的方式一般是两条update合并成1条,或者强制设定事务的隔离级别,你这个代码不完整,我也不知道该给你往哪里加东西。
不过有一个小问题你得先调整一下:
Writer outstream = clob.getCharacterOutputStream();
if (content != null) {
// outstream.write(content);
outstream.write(content.toCharArray(),0,content.toCharArray().length);
outstream.flush();
outstream.close();
}
你的这段代理里这句话Writer outstream = clob.getCharacterOutputStream();应该拿到if(content!=null)里面,按照你原来的写法,如果那个if条件不满足,那么这个输出流就不会关闭了,这个也许是引起问题的关键吧。
如果不行的话,你就把完整的代码贴上吧,你这个异常要看整个事务是怎么写的。
热心网友
private static String clobToString(CLOB clob) throws Exception{
Reader inStreamDoc = clob.getCharacterStream();
char[] tempDoc = new char[(int) clob.length()];
inStreamDoc.read(tempDoc);
inStreamDoc.close();
return new String(tempDoc);
}
该方法返回的就是clob的String形式
我就是这么用的。至今没发现问题。
热心网友
如果使用Oracle的话,直接将Clob字段读取为String;也就是下面这一行:
clob = (oracle.sql.CLOB) rs.getObject(1);
可以直接写成
String str = rs.getString(1);