- 浏览: 1138997 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 19820import javax.xml.namespace.QNa ... -
java读取gz内容中文乱码
2018-06-13 15:22 1159在java读取gz压缩包的时候发现只有部分中文出现乱码 ... -
Windows server 2008下计划任务无法正常执行
2017-07-21 09:55 1436在Windows server 2008 ... -
java mysql插入数据库中文变问号解决之道
2017-07-15 23:51 16061、my.ini 设置:utf-8 2、creat ... -
java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
2011-07-06 15:03 117460SimpleDateFormat format ... -
java 将json形式的字符串转为json对象 json
2010-03-24 20:59 2749import java.io.*; import ... -
StringUtils StringUtils.leftPad
2010-02-25 11:49 5468这么好用的方法,第一次在系统里面看到,真的感到有点遗憾,在 ... -
ibatis Cause: java.sql.SQLException: ORA-00917: 缺失逗号
2010-02-01 22:03 6374ibatis Cause: java.sql.SQLExcep ... -
org.exolab.castor.xml.MarshalException: The following exception occured while va
2010-01-06 20:24 1896org.exolab.castor.xml.MarshalEx ... -
让人讨厌的双精度类型:doubleNum = 7.9007751E7 怎么转化为stringNum
2009-06-15 17:21 2748每次从excel 中读取保存到数据库中,都会是双精度型的,晕死 ... -
java解析txt文件获取文件列数
2009-06-13 12:00 3804public class TestLine { ... -
java解析txt文件 inputStream流 Struts解析txt文件
2009-06-13 11:53 6205注意:在用到struts中的Form 读取文件的时候,可以使用 ... -
BufferedReader与InputStream联合使用
2009-06-13 11:44 5855最近写代码时发现用Buff ... -
java 判断字符串含有数字
2009-06-11 00:07 7400java中判断字符串是否为数字的三种方法 1用JAVA自带的 ... -
操作Dom4j xml
2009-05-07 17:47 1170Parsing XML 或许你想要做的第一件事情就是 ... -
Set和List区别
2009-05-06 22:04 1728java.util包中 Set 和 List 的区别 对于Se ... -
如何遍历map的主键
2009-04-20 11:09 2922如何遍历一个HashMap 以下是两种方法遍历HashMap ... -
javaMD5加密
2009-03-25 17:01 1955import java.security.Messag ... -
oracle java解析excel
2009-03-25 16:17 1493import java.io.FileInputStream; ... -
java float转换int
2009-02-18 14:46 542001.Java的简单类型及其 ...
相关推荐
在处理CLOB类型时,MyBatis需要将Java对象中的String或Reader类型数据转换为CLOB,以便存储到数据库中。 1. **CLOB类型数据的插入** 当你需要将一个字符串或者Reader对象插入到CLOB字段时,MyBatis默认可能无法...
本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和Oracle JDBC驱动库。在上述代码中,我们看到`import oracle.jdbc.driver.OracleDriver;`,这表示我们将使用Oracle...
### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...
在Java应用程序与Oracle数据库交互时,通常需要在两者之间进行`String`与CLOB类型的转换。以下是对这个主题的详细讨论。 1. **CLOB数据类型**: Oracle的CLOB类型可以存储最大为4GB的单个字符数据,这使得它成为...
标题中的“jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标”涉及到三个主要的Java数据库编程知识点:JDBC连接、Oracle数据库中的CLOB类型处理以及通过Java调用存储过程处理输出游标。 1. JDBC...
3. **CLOB 数据读取**:无论是 `oracle.sql.CLOB` 还是通过 `getVendorObj()` 方法得到的 `oracle.sql.CLOB` 对象,都可以通过 `getAsciiStream()` 和 `getSubString()` 方法来读取 CLOB 的内容,并将其转换为字符串...
CLOB与BLOB的存储与读取,String与CLOB的想换转换,字节码文件的存储与读取等等
首先,要操作数据库中的Clob字段,需要关注的是如何在Java对象与Clob字段之间进行转换。由于Clob字段通常用于存储大量文本数据,如果使用传统的JDBC方式处理,代码将会相当复杂。但随着数据库技术的发展,越来越多的...
在IT领域,ActiveXObject和Clob字段是两个重要的概念,主要与Web开发和数据库操作相关。ActiveXObject是Microsoft的一种技术,允许在Internet Explorer浏览器中创建和使用COM对象,而Clob是数据库中用于存储大量字符...
在 Java 中,通过使用 oracle.sql.CLOB 类来处理 CLOB 类型字段的存储和读取。 在 Java 中,连接 Oracle 数据库需要使用 Oracle 的 JDBC 驱动程序。首先,需要使用 Class.forName() 方法加载驱动程序,然后使用 ...
在上面的代码中,`SerialBlob`是JDBC API提供的一个类,用于将字节数组转化为Blob对象,而`StringClob`可能需要特定的库来实现,如Apache Commons Lang的`StringUtils.toClob()`方法。 在检索大型对象时,Hibernate...
例如,在Oracle中,你可以创建一个包含CLOB列的表,然后使用`TO_CLOB`函数将字符串转换为CLOB类型进行插入。 ```sql CREATE TABLE my_table (id NUMBER, content CLOB); INSERT INTO my_table (id, content) ...
这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为String类型。 首先,理解CLOB对象的特性是关键。CLOB是一种BLOB(Binary Large Object)的变种,专用于存储字符数据。在JDBC...
在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob(Character Large Object)则用于存储大量的文本...
在Hibernate中,如果Clob字段的值是字符串,可以通过将Clob字段映射为String类型,让Hibernate自动处理转换。这种方式简单易用,但可能不适合非常大的文本,因为可能会导致内存溢出。 3.3 直接使用Clob类型: 对于...
在Oracle数据库中,通过正确使用CLOB对象和相关的数据库连接API,可以高效地进行CLOB数据的读取和写入。需要注意的是,由于CLOB数据量庞大,读取时应考虑性能优化,如分块读取等策略;写入时则需确保数据的完整性和...
在Java世界中,尤其是在持久化框架Hibernate中,处理Clob类型的数据需要特别的方法和配置。 在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob...
在Java编程中,调用Oracle数据库的存储过程并传递CLOB(Character Large Object)类型参数是一项常见的任务。CLOB类型用于存储大文本数据,如XML文档、长篇报告或者日志记录。以下是一个详细的步骤解释如何实现这个...
2. **读取CLOB数据**:在查询返回结果中,iBATIS会自动处理CLOB类型,将其转化为String。但是,由于CLOB可能包含大量数据,因此在处理时需要考虑性能问题,避免一次性加载整个CLOB到内存中。 3. **事务管理**:由于...
在Java的持久化框架Hibernate中,BLOB(Binary Large Object)和CLOB(Character Large Object)是用来处理大数据类型的,如图像、音频、大型文本等。本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的...