java更新clob字段出现的问题。怪。。。

yusicn 2003-10-09 10:43:59
/* 查询此CLOB对象并锁定 */
rs = stmt.executeQuery("SELECT * FROM "+ TableName +" "+ WhereString +" for update");
//TableName 是表名, WhereString 是条件
while (rs.next()) {
/* 取出此CLOB对象 */
for (int i=0;i<Location_sql.length;i++){
//判断是clob字段,是执行更新操作
if (Location_sign[i].equals("1")){
clob = rs.getClob(Location_sql[i]); //Location_sql[i]是字段名
bb = Location_value[i].getBytes(); //处理要更新的值 Location_value[i]是对应clob值
out = ((OracleClob) clob).getAsciiOutputStream(); //处理要更新的值
out.write(bb,0,bb.length) ; //处理要更新的值
out.flush(); //处理要更新的值
ptmt = con.prepareStatement("update " + TableName +" set "+ Location_sql[i] +"=?" + " " + WhereString);
ptmt.setClob(1, clob);
ptmt.executeUpdate();
//设定更新clob字段
out.close();
}}
}
con.commit();
/* 恢复原提交状态 */
con.setAutoCommit(true);

=============对同一字段更新几次就出现死锁,有时就一次,有时就2次或3次=======================================
...全文
163 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
etre 2003-10-09
  • 打赏
  • 举报
回复
你用的是什么数据库啊。http://www.csdn.net/develop/read_article.asp?id=19814这里有
zxl19790710 2003-10-09
  • 打赏
  • 举报
回复
conn = factory.getConnection();
conn.setAutoCommit(false);
/* 查询CLOB对象并锁定 */
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT BOCONTENT FROM CSPRODUCTS "
+" WHERE BONAME = '"+bean.getBoname()+"'"
+" and PID = '"+bean.getPid()+"' FOR UPDATE");
if (rs.next()) {
/* 获取此CLOB对象 */
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("BOCONTENT");
/* 进行覆盖式修改 */
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
out.write(bean.getBocontent());
out.close();
}
conn.commit();

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧