从网上查找一堆参考,要么语焉不详,要么不可行。自己鼓捣了一堆可以正常入库了。请看最后:

insert into CP_V_INFO" +
"(ID, "+
"PROJECT_ID, "+
……
"V_INFO, "+
……
"VERSION)values(?,?,?,?,?,?,?,?,?,?," +
"?,?,EMPTY_CLOB(),?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?," +
"?)";
this.cdcDao.executeSQL(sql, v7Info.getId(),
v7Info.getProjectId(),……
);
//先插入该数据,在该字段用 EMPTY_CLOB() 插入。
//然后 for update
String update_sql = "select V_INFO from CP_V_INFO where ID='"+v7Info.getId()+"' for update";
this.cdcDao.executeClobSQL(update_sql,"V_INFO",v7Info.getvInfoStr());
/**
*
* @Method: executeClobSQL
* @Description: 更新Clob字段
* @param update_sql
* @param column 字段名称 data 该字段数据
* @return
* @throws SQLException
* @throws Exception
* @author liuz
* @date 2016-3-28
*/
public void executeClobSQL(String update_sql,String column,String data) throws SQLException, Exception {
if(((MyJdbcTemplate)this.getJdbcTemplate()).isNEED_ENCODE()){
update_sql = new String(update_sql.getBytes(((MyJdbcTemplate)this.getJdbcTemplate()).getAPP_ENCODE()),((MyJdbcTemplate)this.getJdbcTemplate()).getDB_ENCODE());
}
PreparedStatement p = null;
ResultSet rs = null;
try {
Connection conn = this.getConnection(); conn.setAutoCommit(false);
p = paserSQL(conn, update_sql);
rs = conn.createStatement().executeQuery(update_sql);
if (rs.next()) {
/* 取出此CLOB对象 */
oracle.sql.CLOB clob = null;
clob = (oracle.sql.CLOB) rs.getClob(column);
/* 向CLOB对象中写入数据 */
BufferedWriter out = new BufferedWriter(clob
.getCharacterOutputStream());
out.write(data);
out.flush();
out.close();
}
rs.close();
conn.commit();
conn.setAutoCommit(true);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (p != null) {
try {
p.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

  千辛万苦倒腾入库之后,同事说了一句“干嘛要改底层代码?”。啪啪啪一通悦耳的键盘声之后,改回原来的方式。该字段用 String 正常插入。结果是:正常入库了。、、、、、、、、、、泪奔!!!!

String sql = "insert into CP_V_INFO" +
"(ID, "+
……
"V_INFO, "+
……
"VERSION)values(?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?," +
"?)";
this.cdcDao.executeSQL(sql, v7Info.getId(),
……
v7Info.getvInfo(),//String类型
……
v7Info.getVersion());
/* ******** end **********/

Oracle处理Clob类型数据入库(String入库)的更多相关文章

  1. Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值

    感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一 ...

  2. Java更新Oracle的clob类型字段

    Java更新Oracle的clob类型字段 1.查询该clob字段 2.处理该clob字段查询结果 3.更新该clob字段查询结果 1.查询该clob字段 <select id="se ...

  3. Oracle的CLOB大数据字段类型

    转载:https://www.cnblogs.com/Grand-Jon/p/7389427.html 一.Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARC ...

  4. Oracle中Clob类型处理解析

    最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...

  5. Oracle中Clob类型处理解析 (转)

    转:原文:http://blog.csdn.net/pojianbing/article/details/2789426      最近利用NHibernate映射类型为Clob字段在插入数据时发现当 ...

  6. .Net处理Oracle中Clob类型字段总结

    最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...

  7. java 操作CLOB类型数据

    clob类型,但对于这个类型处理起来还是比较麻烦的,varchar2长度为4000bytes,如果varchar2能满足楼主的需求,建议使用varchar2,下面提供了在Java 中读取clob类型的 ...

  8. Oracle关于date类型数据的总结

    往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYY ...

  9. java基础类型数据与String类包装类之间的转换与理解

    数据类型转换一般分为三种: 在java中整型,实型,字符型视为简单数据类型,这些数据类型由低到高分别为:(byte,short,char--int-long-float-double) 简单数据类型之 ...

随机推荐

  1. YUYV格式到RGB格式的转换

    为什么YUYV格式要转到RGB格式,视频的显示调用的多数API都是基于RGB格式,所以需要进行格式的转换. YUYV格式如下: Y0U0Y1V0 Y2U1Y3V1.......... 说明:一个Y代表 ...

  2. mysql之select into outfile

    参见:http://dev.mysql.com/doc/refman/5.1/en/select-into.html 例子: SELECT a,b,a+b INTO OUTFILE '/tmp/res ...

  3. DataUml Design 介绍10 - DataUML 1.4版本功能(增加UML活动图和用例图)

    DataUml Design 1.4版本正式发布 1.解决软件自动关闭的问题 2.增加UML活动图和用例图功能 详细介绍稍后继续...........................

  4. 华为HiAI 助力苏宁易购,让你尽享完美视觉购物体验!

    还在感慨商品照片与实物存在差距,又要退货? 还在抱怨被忽视的图片小细节,影响了生活品质? 想要“买买买”, 又担心海量的商品图片耗光你的流量? 就在近期 搭载HiAI能力的苏宁易购新版上线, 让你畅快 ...

  5. constructors and destructors

    A constructor is a method that gets called immediately when an object is allocated (on the stack or ...

  6. 整理mp4协议重点,将协议读薄

    MP4 实际代表的含义是 MPEG-4 Part 14.它只是 MPEG 标准中的 14 部分.它主要参考 ISO/IEC 标准来制定的.MP4 主要作用是可以实现快进快放,边下载边播放的效果.他是基 ...

  7. (phpQuery)对网站产品信息采集代码的优化

    a.要采集的源链接: http://www.prospecbio.com/Recombinant_Proteins/ b.具体要求:

  8. c++ 判断windows系统和进程是32位还是64位

    BOOL Is64BitOS() { typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)( __out LPSYSTEM_INFO lpSystemInfo ...

  9. Linux 下 -bash: mysql: command not found解决办法

    -bash: mysql: command not found 1.vim ~/.bash_profile 最下面写 export PATH=$PATH:/usr/local/mysql/bin(你的 ...

  10. charles_https_通过模拟器安装APP然后抓包

    声明,方法参考链接:https://bbs.pediy.com/thread-226435.htm 使用文中的模拟器并不好使,自个使用逍遥模拟器的4.4版本成功抓包, 1>下载逍遥模拟器,在逍遥 ...