CLOB字段的插入与更新

由于项目需求,表里字段有个CLOB字段,以前没用过这个字段类型,参考了网上一些内容后,记录一下CLOB字段的插入与更新。

插入时把CLOB字段插入一个empty_clob(),然后再取出更新clob字段。代码如下

                   public String[] getWebFileContent(String name) throws DataServiceSQLException {
                       Connection connection = null;
                       PreparedStatement pstatement = null;
                       ResultSet rs = null;
                       String content = null;       
                      try{
                         String sql = "insert into bam_webfileinfo(name,groupid,content) values(?,?,empty_clob())";
			 connection = ConnectionSource.getConnection();
			 boolean defaultCommit=connection.getAutoCommit();
			 connection.setAutoCommit(false);
			 pstatement = connection.prepareStatement(sql);
			 pstatement.setString(1, filename);
			 pstatement.setInt(2, obj.getGroupId());
			 pstatement.executeUpdate();
			 pstatement=null;
			 String sqlString = "select contentfrom bam_webfileinfo where name = ? for update"; 
			 pstatement = connection.prepareStatement(sqlString);
			 pstatement.setString(1, filename);
			 rs=pstatement.executeQuery();
			 java.sql.CLOB clobContent = null;
			 if(rs.next()){     
				 clobContent = (java.sql.CLOB.CLOB)rs.getClob("content");   
			 }
			 Writer wr = clobContent.getCharacterOutputStream();        
			 wr.write(obj.getContent());    
			 wr.flush(); 
			 wr.close();
			 connection.commit();
			 connection.setAutoCommit(defaultCommit);
                       
                       }catch (SQLException e) {
                          throw new DataServiceSQLException(e);
                    }catch(Exception e){
                          e.printStackTrace();
                    } finally {
                          ConnectionSource.closeStatement(pstatement);
                          ConnectionSource.closeConnection(connection);
                    }

               }


更新时先把CLOB字段置空,然后再更新CLOB字段。代码如下

		  public void updateContent(WebFileInfo obj) throws DataServiceSQLException {   
                     Connection connection = null;
                     PreparedStatement pstatement = null;
                     ResultSet rs = null;
                     try{
                         String sql = "update bam_webfileinfo set content=empty_clob() where name = ?";
			 connection = ConnectionSource.getConnection();
			 pstatement = connection.prepareStatement(sql);
			 pstatement.setString(1, obj.getFileName());
			 pstatement.executeUpdate();
			 connection.commit();
			 pstatement = null;
			 String sqlString = "select content from bam_webfileinfo where name = ? for update ";
			 boolean defaultCommit=connection.getAutoCommit();
			 connection.setAutoCommit(false);
			 pstatement = connection.prepareStatement(sqlString);
			 pstatement.setString(1, obj.getFileName());
			 rs=pstatement.executeQuery();
			 java.sql.CLOB clobContent = null;
			 if(rs.next()){     
				 clobContent = (java.sql.CLOB)rs.getClob("content");    
			 }
			 Writer wr = clob.getCharacterOutputStream();   
			 wr.write(obj.getContent());    
			 wr.flush();    
			 wr.close();
			 connection.commit();
			 connection.setAutoCommit(defaultCommit);
                    }catch (SQLException e) {
                          throw new DataServiceSQLException(e);
                    }catch(Exception e){
                          e.printStackTrace();
                    } finally {
                          ConnectionSource.closeStatement(pstatement);
                          ConnectionSource.closeConnection(connection);
                    }

               }




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值