Java 保存带Clob字段的数据
几年前的代码,做一下记录
/**
* <将前段传入的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字段的数据相关推荐
- 包含clob字段的数据入库sql怎么写
针对oracle数据库,在我们后台需要入库clob字段类型时,sql应该怎么写呢? 最近遇到这个问题,于是了解了下并作记录(以表test为例,含有id-number,name-vachar2,cont ...
- java clob 释放_在Java中处理CLOB字段
[字段类型:blob,clob,nclob 说明:三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频.视频等非文本文件� ...] 1.or ...
- Java导出带格式的Excel数据到Word表格
在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用Spi ...
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...
- java处理Oracle Clob Blob类型数据
背景:博主这些数据主要是接收消息中间件来的,接收的RAW类型数据全都变成了String,如果直接存表可能会有长度不够的问题,所以需要这样处理,之前所以是在査的时候就这样处理主要是消息中间件发过来的时候 ...
- JAVA保存有上下级关系的数据_存上下级关系数据的表有什么特点?
展开全部 关系数据库的主要特点列举如下: 1.数据集中控制,在文件62616964757a686964616fe78988e69d8331333433626434管理方法中,文件是分散的,这些文件之间 ...
- clob mybatis_mybatis 解决Druid设置Oracle的Clob字段时的小坑详解
http://blog.csdn.net/renfufei/article/details/44887371 mybatis 插入读取clob类型,之前使用类型转换器的方式,但是不好使,不能读取, j ...
- java 写oracle clob_Java将数据写入Oracle的Clob字段中
---------------------将大量数据写入Clob字段中------------- 一.得到连接 def dbDriver = "oracle.jdbc.driver.Orac ...
- oracle clob数据保存,oracle数据库里保存clob字段
public void addStatements(StatementsBean statementsBean) { try { Session session = this.getSession() ...
最新文章
- 30~60k | 小鹏汽车3D视觉感知工程师/专家招聘(社招)
- 王木匠,我服了你一半
- 关于程序员的59条搞笑但却真实无比的编程语录_技术/软件
- php函数剩余时间,php计算剩余时间的自定义函数
- Elasticsearch全文检索对比:match、match_phrase、wildcard
- (五)Struts2 标签
- Android:IntentService的学习
- linux 查当前pid_杀死僵尸进程,你需要这些神奇高效的Linux命令行
- php把数据创建一个表格,PHP创建(导出Excel数据表格)
- C语言课后习题(44)
- 安卓错误: 找不到R符号_国际音标及附加符号读音amp;用法示例
- 绝对干货:供个人开发者赚钱免费使用的一些好的API接口
- 集成学习 Bagging, Boosting, Stacking
- 007-JQuery 筛选
- 一听不是双休,连面试都免了
- 怎样修改用户的计算机配置文件,用户配置文件
- Java视频特效处理(超全)/PC版美颜相机
- Faster R-CNN最全讲解
- 水处理设备网关,生活污水处理设备网关。
- utools配置内网穿透
热门文章
- 二维正态分布的参数与概率密度图形
- 《机器学习实战》学习笔记(七):利用AdaBoost 元算法提高分类性能
- 无感token刷新,我是怎么做的
- Mybatis一级缓存
- excel小写转大写公式_一个复制粘贴的问题,竟然难倒了90%的Excel人【Excel表格制作教程】...
- Android Studio各个版本的区别
- 18为什么这些 SQL 语句逻辑相同,性能却差异巨大?
- 三星预计Q1营业利润116亿美元 同比增长50%
- 并发危险:解决多线程代码中的 11 个常见的问题
- ARM GIC 与Linux kernel的中断子系统(4)GIC和中断处理