- 浏览: 1125362 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (240)
- javascript (24)
- Struts (3)
- Hibernate (9)
- spring (3)
- 学海无涯 (45)
- jstl (4)
- java (21)
- js (4)
- Ajax (2)
- 开源框架-ajax (1)
- oracle spring (38)
- unix (6)
- 美国骆驼 American Camel 骆驼皮鞋 骆驼正品 (0)
- android (1)
- BIEE (16)
- informatica (13)
- 触摸屏 (1)
- 诈×骗×电话 (4)
- 远程桌面无法连接 (1)
- 旅游 (3)
- 生活 (8)
- hp6531s (2)
- oracle (6)
- 短信病毒 (1)
- 手机诈骗 短信病毒 (3)
- 骗子 (3)
- ultraedit (1)
- sql2008 (0)
- 苏宁易购大骗子 苏宁易购二手当新品卖 苏宁易购以次充好 苏宁易购您还敢下单吗 (0)
- 苏宁易购二手当新品卖 (0)
- informatica etl (5)
- etl (8)
- NoClassDefFoundError: com/opensymphony/xwork2/util/classloader/ReloadingClas (1)
- mysql (2)
- jquery ajax post (1)
- jason (1)
- json (1)
- struts2 (1)
- jsp 文本编辑器 (2)
- beyond compare (1)
- svn (3)
- EAS BOS (3)
- tapestry5 (1)
- obiee (3)
- java dll (2)
- office (1)
- kettle 8.2 org.gjt.mm.mysql.Driver (1)
最新评论
-
JianCaesar:
oracleStr2Clob,为什么要用反射,直接调用不可以吗 ...
java String和Clob转换 -
vip_gg:
...
邮件失败!javax.mail.AuthenticationFailedException: 535 Error: authentication -
cherryQQ:
我把敏感的用*号代替啦,这样可以了吧,等你加一个号,等着租房子 ...
**同城租房需要加房东的微*号 -
sam.sheng.3:
dream80 写道是的,这个主要就是二步验证的问题,很多人不 ...
AttributeError: can't set attribute -
ooo456mmm:
不错
oracle job 定时执行 存储过程
第一时间想到spring,因为spring对orm工具有封装, 像ibatis,hibernate等,在spring.jar中大概翻了一下包,根据包名和类名发现如下可疑类org.springframework.orm.ibatis.support.ClobStringTypeHandler 根据源码跟踪到了 org.springframework.jdbc.support.lob.OracleLobHandler 这个类才是内有乾坤,有我想要的一切东西,嘿嘿,不好意思了,统统抄来.
在spring包中有个org.springframework.jdbc.support.lob.AbstractLobHandler这里面定义了基本的Clob和Blog处理方法
org.springframework.jdbc.support.lob.DefaultLobHandler是默认的实现,除了Oracle其他数据库使用此实现
org.springframework.jdbc.support.lob.OracleLobHandler是专门用于Oracle的实现,可见Oracle的BT,为了不造成直接包依赖,相关的调用都是利用反射完成的.有兴趣的朋友可以去阅读下这两个类,以便了解Oracle的特殊性.
经过分析,将Clob的创建,以及与String的互转代码放出来供大家使用.当然不可能完全copy了,我做了些简化处理,不过已经测试了,没用问题.更多细节请查阅spring的org.springframework.jdbc.support.lob包源码.
SqlUtil类是我为了方便测试写的,大家靠代码就能够猜出来其内容了,所以就不全贴了,只贴本文的主题部分.
/**
*
* Description:创建Clob或者Blob
*
* @param conn数据库连接对象
* @param lobClassName
* oracle.sql.CLOB或者oracle.sql.BLOB
* @return oracle.sql.CLOB或者oracle.sql.BLOB对象
* @throws Exception
* @blog blog.csdn.ne t/sunyujia/
* @mail sunyujia@yahoo.cn
* @since:Oct 1, 2008 6:42:08 PM
*/
public static Object createOracleLob(Connection conn, String lobClassName)
throws Exception {
Class lobClass = conn.getClass().getClassLoader().loadClass(
lobClassName);
final Integer DURATION_SESSION = new Integer(lobClass.getField(
"DURATION_SESSION").getInt(null));
final Integer MODE_READWRITE = new Integer(lobClass.getField(
"MODE_READWRITE").getInt(null));
Method createTemporary = lobClass.getMethod("createTemporary",
new Class[] { Connection.class, boolean.class, int.class });
Object lob = createTemporary.invoke(null, new Object[] { conn, false,
DURATION_SESSION });
Method open = lobClass.getMethod("open", new Class[] { int.class });
open.invoke(lob, new Object[] { MODE_READWRITE });
return lob;
}
/**
*
* Description:将Clob对象转换为String对象,Blob处理方式与此相同
*
* @param clob
* @return
* @throws Exception
* @mail sunyujia@yahoo.cn
* @blog blog.csdn.ne t/sunyujia/
* @since:Oct 1, 2008 7:19:57 PM
*/
public static String oracleClob2Str(Clob clob) throws Exception {
return (clob != null ? clob.getSubString(1, (int) clob.length()) : null);
}
/**
*
* Description:将string对象转换为Clob对象,Blob处理方式与此相同
*
* @param str
* @param lob
* @return
* @throws Exception
* @mail sunyujia@yahoo.cn
* @blog blog.csdn.ne t/sunyujia/
* @since:Oct 1, 2008 7:20:31 PM
*/
public static Clob oracleStr2Clob(String str, Clob lob) throws Exception {
Method methodToInvoke = lob.getClass().getMethod(
"getCharacterOutputStream", (Class[]) null);
Writer writer = (Writer) methodToInvoke.invoke(lob, (Object[]) null);
writer.write(str);
writer.close();
&n-
bsp;return lob;
}
/**
*
* Description: 全部源码查考自
* org.springframework.jdbc.support.lob.OracleLobHandler
*
* @param args
* @throws Exception
* @mail sunyujia@yahoo.cn
* @blog blog.csdn.ne t/sunyujia/
* @since:Oct 1, 2008 7:26:16 PM
*/
public static void main(String[] args) throws Exception {
//创建数据源略
Connection conn = SqlUtil.getConnection();
Clob clob = (Clob) createOracleLob(conn, "oracle.sql.CLOB");// BLOB的话传oracle.sql.BLOB
// create table testTb (TheClob Clob);
PreparedStatement pstmt = conn
.prepareStatement("insert into testTb (TheClob) values (?)");
pstmt.setClob(1, oracleStr2Clob("test", clob));
pstmt.execute();
SqlUtil.closeStmt(pstmt);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from testTb");
while (rs.next()) {
String str = oracleClob2Str(rs.getClob(1));
System.out.println(str);
}
SqlUtil.closeRs(rs);
SqlUtil.closeStmt(stmt);
SqlUtil.closeConn(conn);
}
发表评论
-
java webservice 接口调用
2018-09-29 15:11 19772import javax.xml.namespace.QNa ... -
java读取gz内容中文乱码
2018-06-13 15:22 1120在java读取gz压缩包的时候发现只有部分中文出现乱码 ... -
Windows server 2008下计划任务无法正常执行
2017-07-21 09:55 1380在Windows server 2008 ... -
java mysql插入数据库中文变问号解决之道
2017-07-15 23:51 15611、my.ini 设置:utf-8 2、creat ... -
java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
2011-07-06 15:03 117363SimpleDateFormat format ... -
java 将json形式的字符串转为json对象 json
2010-03-24 20:59 2671import java.io.*; import ... -
StringUtils StringUtils.leftPad
2010-02-25 11:49 5361这么好用的方法,第一次在系统里面看到,真的感到有点遗憾,在 ... -
ibatis Cause: java.sql.SQLException: ORA-00917: 缺失逗号
2010-02-01 22:03 6308ibatis Cause: java.sql.SQLExcep ... -
org.exolab.castor.xml.MarshalException: The following exception occured while va
2010-01-06 20:24 1821org.exolab.castor.xml.MarshalEx ... -
让人讨厌的双精度类型:doubleNum = 7.9007751E7 怎么转化为stringNum
2009-06-15 17:21 2699每次从excel 中读取保存到数据库中,都会是双精度型的,晕死 ... -
java解析txt文件获取文件列数
2009-06-13 12:00 3748public class TestLine { ... -
java解析txt文件 inputStream流 Struts解析txt文件
2009-06-13 11:53 6136注意:在用到struts中的Form 读取文件的时候,可以使用 ... -
BufferedReader与InputStream联合使用
2009-06-13 11:44 5815最近写代码时发现用Buff ... -
java 判断字符串含有数字
2009-06-11 00:07 7341java中判断字符串是否为数字的三种方法 1用JAVA自带的 ... -
操作Dom4j xml
2009-05-07 17:47 1132Parsing XML 或许你想要做的第一件事情就是 ... -
Set和List区别
2009-05-06 22:04 1672java.util包中 Set 和 List 的区别 对于Se ... -
如何遍历map的主键
2009-04-20 11:09 2866如何遍历一个HashMap 以下是两种方法遍历HashMap ... -
javaMD5加密
2009-03-25 17:01 1916import java.security.Messag ... -
oracle java解析excel
2009-03-25 16:17 1459import java.io.FileInputStream; ... -
java float转换int
2009-02-18 14:46 541551.Java的简单类型及其 ...
相关推荐
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
ORACLE中CLOB字段转String类型
数据库中clob类型转换的问题 数据库中clob类型转换的问题
mybatis 对clob类型转换,解决clob类型数据插入数据库报异常问题
运用Java如何存取Oracle中的CLOB类型字段
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
JAVA读CLOB对象 完整代码 very good very strong
String 与oracle colb 转换
NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788
java读取oracle数据库中clob字段 把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
网络上很多关于JAVA对Oracle中BLOB、CLOB类型字段的操作说明,有的不够全面,有的不够准确。
CLOB与BLOB的存储与读取,String与CLOB的想换转换,字节码文件的存储与读取等等
Mybatis 处理 CLOB、BLOB 类型数据
NULL 博文链接:https://jarorwar.iteye.com/blog/555697
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
oracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracle
完整通过JAVA读写ORACLE中CLOB、BLOB字段的方法,提供数据库连接池的方法
weblogic下转换oracle 的clob类型经常报转型错误,本例子通过反射解决weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转型成oracle.sql.CLOB问题