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

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. C++在线编译器

    主要有3个,且它们都支持C++11 http://gcc.godbolt.org/ http://coliru.stacked-crooked.com/ http://ideone.com/ 第一个网 ...

  2. codeforces #364b Cells Not Under Attack

    比赛的时候 long long sum=n*n,计算不出1e10长度到数,没有搞掉. 哎,以后要注意这个地方.这个题其实不难: 统计能被攻击到的个数,然后用总的个数减掉就可以了.注意有些地方重复计算, ...

  3. html中添加freemarker条件判断

    1.<#if isChanged==1>id="skin_${skins_index*skins?size+skin_index+1}"<#else>id= ...

  4. php 循环简写

    <?php class a{ public function news($news){ $articles = array(); foreach ($news as $key => $va ...

  5. Linux make语法

    make是一种控制编译或者重复编译软件的工具. make可以自动关键软件的编译内容.方式和时机,从而使程序员把更多的精力集中在编写代码上. make主要的机制是在命令行键入make命令,make会自动 ...

  6. wchar与char字符转换的探究

    在Xcode 模拟器环境下.測试wchar_t与char的转换: void convert_test() { setlocale(LC_ALL, "zh_CN.UTF-8"); c ...

  7. MEF笔记 之延迟加载

    文章参考:在MEF中实现延迟加载部件  作者:TianFang 仅有一个服务提供者时候 using System; using System.Collections.Generic; using Sy ...

  8. Ionic 取消自带动画效果

    $ionicConfigProvider.views.transition('none'); 或: <ion-view view-title="个人中心" animation ...

  9. WPF开发简介教程

    1/ VS中文件-新建-项目-WPF应用程序 2/ 左上角工具箱中有很多组件可以直接拖拽使用 3/ 双击组件,进入脚本功能编辑界面,如按钮: private void Button_Click_1(o ...

  10. hibernate 懒加载图解