Oracle处理Clob类型数据入库(String入库)
从网上查找一堆参考,要么语焉不详,要么不可行。自己鼓捣了一堆可以正常入库了。请看最后:
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入库)的更多相关文章
- Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值
感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一 ...
- Java更新Oracle的clob类型字段
Java更新Oracle的clob类型字段 1.查询该clob字段 2.处理该clob字段查询结果 3.更新该clob字段查询结果 1.查询该clob字段 <select id="se ...
- Oracle的CLOB大数据字段类型
转载:https://www.cnblogs.com/Grand-Jon/p/7389427.html 一.Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARC ...
- Oracle中Clob类型处理解析
最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...
- Oracle中Clob类型处理解析 (转)
转:原文:http://blog.csdn.net/pojianbing/article/details/2789426 最近利用NHibernate映射类型为Clob字段在插入数据时发现当 ...
- .Net处理Oracle中Clob类型字段总结
最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...
- java 操作CLOB类型数据
clob类型,但对于这个类型处理起来还是比较麻烦的,varchar2长度为4000bytes,如果varchar2能满足楼主的需求,建议使用varchar2,下面提供了在Java 中读取clob类型的 ...
- Oracle关于date类型数据的总结
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
- java基础类型数据与String类包装类之间的转换与理解
数据类型转换一般分为三种: 在java中整型,实型,字符型视为简单数据类型,这些数据类型由低到高分别为:(byte,short,char--int-long-float-double) 简单数据类型之 ...
随机推荐
- python剑指网络篇二
在socket编程中 AF_INET 对应 IPv4 SOCK_STREAM 对应 TCP SOCK_DGRAM 对应 UDP
- undefined reference to `shm_unlink'
1.问题描述: 在编译一个程序的时候提示这样的错误: BLog.cpp:(.text+0x5fc): undefined reference to `shm_unlink'DBLog.cpp:(.te ...
- tomcat各目录下的作用
1.tomcat的主目录下的文件 bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 重要: 很多环 ...
- java中static变量的声明和初始化
目录(?)[+] 问题1静态变量如何初始化 问题2JDK如何处理static块 问题3如何看待静态变量的声明 对初始问题的解答 在网上看到了下面的一段代码: public class Test ...
- OC-2-字符串
课程要点: C语言字符串与OC语言字符串的区别 类方法与对象方法的区别 理解NSString(可变字符串)和NSMutableString(不可变字符串)的差异 NSString(不可变字符串) NS ...
- h264 ES流文件通过计算first_mb_in_slice区分帧边界
本人因为近期在读取h264文件的时候,遇到怎样读取完整一帧数据的问题.通过使用elecard stream analyzer工具,以及结合<新一代视频压缩编码标准--H264/AVC>(第 ...
- javaweb+mysql+c3p0ajax实现三级联动
1.首先要导入jar文件: c3p0-0.9.5.1.jarcommons-beanutils-1.7.0.jarcommons-collections-3.2.jarcommons-dbutils- ...
- nagios 安装
#!/bin/sh ################################################ #this scripts is created by oldboy #site: ...
- Blue Jeans - poj 3080(后缀数组)
大致题意: 给出n个长度为60的DNA基因(A腺嘌呤 G鸟嘌呤 T胸腺嘧啶 C胞嘧啶)序列,求出他们的最长公共子序列 使用后缀数组解决 #include<stdio.h> #include ...
- 检测进程不存在自动重启shell脚本
#!/bin/bash WORKDIR="/usr/local/gse/gseagent" [[ -d $WORKDIR ]] && { if ! ps aux|g ...