几年前的代码,做一下记录

/**
     * <将前段传入的string对象转换为Clob对象>
     *@author liuzhu 
     *@param str
     *@return
     */
    private Clob stringToClob(String str) {
        if (null == str)
         return null;
        else {
            try {
                 java.sql.Clob c = new javax.sql.rowset.serial.SerialClob(str
                         .toCharArray());
                 return c;
             } catch (Exception e) {
                 return null;
            }
        }
    }

public long saveCheckerTrainHistory(final CheckerTrainHistoryVO vo,final String trainingSummary)
    {
        long retVal = (Long)getZormTemplate().execute(new ZormCallback()
        {
            @Override
            public Long doInZorm(Session session) throws ZormException, SQLException
            {
                
                session.beginTransaction();
                Connection conn = session.connection();
                StringBuffer sql = new StringBuffer();
                sql.append(" INSERT INTO CHECKER_TRAINING_HISTORY ( ");         
                sql.append(" oid, store_id,checkerid,training_theme, ");    
                sql.append(" training_employees, training_summary, ");    
                sql.append(" training_date,created_by, created_time,  ");    
                sql.append(" last_updated_by,last_updated_time )  ");    
                sql.append(" values(?,?,?,?,?,empty_clob(),?,?,?,?,?)");
                //先插入一个空的Clob数据

PreparedStatement ps = null;
                ResultSet rst = null;
                
                try
                {
                    CLOB clob=null; 
                    long rowNum = 0;
                    //禁用自动提交事务  
                    conn.setAutoCommit(false);  
                    String seqSql = "select checker_training_history_s.nextval from dual";
                    ps=conn.prepareStatement(seqSql.toString());  
                    rst = ps.executeQuery();
                    if(rst.next()){
                        rowNum = rst.getLong(1);
                    }
                    ps.close(); 
                    
                    ps=conn.prepareStatement(sql.toString());
                    ps.setLong(1, rowNum);
                    ps.setLong(2, vo.getStoreId());
                    ps.setLong(3, vo.getCheckerId());
                    ps.setString(4, vo.getTrainingTheme());
                    ps.setLong(5, vo.getTrainingEmployees());
                    ps.setDate(6, new java.sql.Date(vo.getTrainingDate().getTime()));
                    ps.setLong(7, vo.getCreatedBy());
                    ps.setDate(8, new java.sql.Date(vo.getTrainingDate().getTime()));
                    ps.setLong(9, vo.getLastUpdatedBy());
                    ps.setDate(10, new java.sql.Date(vo.getTrainingDate().getTime()));
                    ps.executeUpdate();  
                    ps.close();

//查询并获得这个cursor,并且加锁  
                    String sql2=" select training_summary from checker_training_history where oid=? for update";  
                    ps=conn.prepareStatement(sql2);  
                    ps.setLong(1, rowNum);  
                    rst = ps.executeQuery();  
                    if(rst.next()){  
                        clob=(CLOB)rst.getClob(1);  
                    }  
                    /* 向CLOB对象中写入数据 */  
                    BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());  
                    
                    out.write(trainingSummary);  
                    //一定要flush(),否则不会将String对象写入到Clob当中去。。。  
                    out.flush();  
                    out.close();  
                    ps.close();  
                      
                    //更新clob对象  
                    String sql3="update checker_training_history set training_summary =? where oid=?";  
                    ps=conn.prepareStatement(sql3);  
                    ps.setClob(1, clob);  
                    ps.setLong(2, rowNum);  
                    ps.executeUpdate();  
                    ps.close();  
                    conn.commit();  
                    conn.setAutoCommit(true);  
                    return rowNum;
                }
                catch (SQLException|IOException e)
                {
                    e.printStackTrace();
                }                 
                finally
                {
                    try
                    {
                        if(ps!=null)
                        {
                            ps.close();
                        }
                        if(rst != null)
                        {
                            rst.close();
                        }
                        if(conn != null)
                        {
                            conn.close();
                        }
                    }
                    catch (SQLException e)
                    {
                        e.printStackTrace();
                    }
                }
                session.clear();
                return 0L;
            }
        });
        
        return retVal;
    }

Java 保存带Clob字段的数据相关推荐

  1. 包含clob字段的数据入库sql怎么写

    针对oracle数据库,在我们后台需要入库clob字段类型时,sql应该怎么写呢? 最近遇到这个问题,于是了解了下并作记录(以表test为例,含有id-number,name-vachar2,cont ...

  2. java clob 释放_在Java中处理CLOB字段

    [字段类型:blob,clob,nclob 说明:三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频.视频等非文本文件� ...] 1.or ...

  3. Java导出带格式的Excel数据到Word表格

    在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用Spi ...

  4. 如何通过Java导出带格式的 Excel 数据到 Word 表格

    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...

  5. java处理Oracle Clob Blob类型数据

    背景:博主这些数据主要是接收消息中间件来的,接收的RAW类型数据全都变成了String,如果直接存表可能会有长度不够的问题,所以需要这样处理,之前所以是在査的时候就这样处理主要是消息中间件发过来的时候 ...

  6. JAVA保存有上下级关系的数据_存上下级关系数据的表有什么特点?

    展开全部 关系数据库的主要特点列举如下: 1.数据集中控制,在文件62616964757a686964616fe78988e69d8331333433626434管理方法中,文件是分散的,这些文件之间 ...

  7. clob mybatis_mybatis 解决Druid设置Oracle的Clob字段时的小坑详解

    http://blog.csdn.net/renfufei/article/details/44887371 mybatis 插入读取clob类型,之前使用类型转换器的方式,但是不好使,不能读取, j ...

  8. java 写oracle clob_Java将数据写入Oracle的Clob字段中

    ---------------------将大量数据写入Clob字段中------------- 一.得到连接 def dbDriver = "oracle.jdbc.driver.Orac ...

  9. oracle clob数据保存,oracle数据库里保存clob字段

    public void addStatements(StatementsBean statementsBean) { try { Session session = this.getSession() ...

最新文章

  1. 30~60k | 小鹏汽车3D视觉感知工程师/专家招聘(社招)
  2. 王木匠,我服了你一半
  3. 关于程序员的59条搞笑但却真实无比的编程语录_技术/软件
  4. php函数剩余时间,php计算剩余时间的自定义函数
  5. Elasticsearch全文检索对比:match、match_phrase、wildcard
  6. (五)Struts2 标签
  7. Android:IntentService的学习
  8. linux 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行
  9. php把数据创建一个表格,PHP创建(导出Excel数据表格)
  10. C语言课后习题(44)
  11. 安卓错误: 找不到R符号_国际音标及附加符号读音amp;用法示例
  12. 绝对干货:供个人开发者赚钱免费使用的一些好的API接口
  13. 集成学习 Bagging, Boosting, Stacking
  14. 007-JQuery 筛选
  15. 一听不是双休,连面试都免了
  16. 怎样修改用户的计算机配置文件,用户配置文件
  17. Java视频特效处理(超全)/PC版美颜相机
  18. Faster R-CNN最全讲解
  19. 水处理设备网关,生活污水处理设备网关。
  20. utools配置内网穿透

热门文章

  1. 二维正态分布的参数与概率密度图形
  2. 《机器学习实战》学习笔记(七):利用AdaBoost 元算法提高分类性能
  3. 无感token刷新,我是怎么做的
  4. Mybatis一级缓存
  5. excel小写转大写公式_一个复制粘贴的问题,竟然难倒了90%的Excel人【Excel表格制作教程】...
  6. Android Studio各个版本的区别
  7. 18为什么这些 SQL 语句逻辑相同,性能却差异巨大?
  8. 三星预计Q1营业利润116亿美元 同比增长50%
  9. 并发危险:解决多线程代码中的 11 个常见的问题
  10. ARM GIC 与Linux kernel的中断子系统(4)GIC和中断处理