- 浏览: 331119 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
longge424:
你好,可否将saml与spring security结合使用的 ...
SAML介绍 -
bnmnba:
mark
(转)Ant 学习笔记(一) -
redhacker:
写的还不错!谢谢!
SAML介绍 -
linluxian:
SAML介绍 -
hyj1254:
有效,good.
Linux创建目录与删除目录命令具体分析
Oracle 的Blob
Oracle的Lobs的流处理方式与Long等对象的Stream方式不一样,没有Long的诸多限制;只要保持连接,就能通过blob对象正确读取对象。
有两种方式可以读取Blob:
1.直接使用ps.getBinaryStream()的方法得到流对象
2.使用getBlob得到blob,然后通过blob的方法提供的getBinaryStream(),getBytes() 访问blob的数据。
这两种方法都可以在rs.close之后正确获取数据。(在spring 的JdbcTemplet环境下,该rs理论上被JdbcTemplet自动关闭;从数据库连接来看,连接也正确关闭了)。
使用Blob的好处是,按需获取Blob对象。而且可以多次通过blob.getBinaryStream得到对象。且Blob返回的对象可以使用mark/reset方法反复访问。且连接状态正常。
使用blob得到InputStream,可以调用close()接口,也可以不调用该接口,在连接关闭时将自动关闭该连接。最好调用close()释放资源。
c3p0的setBlob(pos,InputStream)接口不能正常工作。
写入或更新Blob时,可以使用ps.setBinaryStream();调用此接口后,in对象到文件尾(在把stream写入blob后,不能要再调用in.close()关闭文件,否则报错)。
也可以使用setBlob(pos,Blob)方法来写入或更新Blob字段;但是注意的是,无论是以blob还是blob.getBinaryStream的方式,都不能自己更新自己,否则死锁。
使用spring读取blob的示例程序:
String sql = "select photo from my_photoes where id='test2' and photo is not null and rownum<2 ";
BLOB blob= (BLOB) simpleDao.queryForObject(sql,Blob.class);
InputStream in = blob.getBinaryStream();
String filename = "./test/dao/pic" + 1+ ".gif";
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
/* 需oracle的BLOB支持。效率可能会高些,但是空间上会有些浪费
byte[] b = new byte[blob.getBufferSize()]; //blob必须为oracle.sql.BLOB时才可调getBufferSize方法; 与java.sql.Blob区别。
System.out.println("bufferSize="+b.length); //32k左右,用这种方式读取文件会有一点空间的浪费。
int len=-1;
while ((len = in.read(b)) != -1) {
out.write(b);
}
*/
/* 纯jdbc方法:
nt b;
while ((b = in.read()) != -1) {
out.write(b);
}
*/
in.close();
out.close();
发表评论
-
(转)Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
2015-06-04 16:49 1839互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已 ... -
OpenSessionInViewFilter详解(转)
2013-07-08 14:25 1461OpenSessionInViewFilter是Spring ... -
【转】web后台线程中获取spring容器内的bean
2013-05-16 14:59 1914有时候需要启动一个后台守护线程,做一些别的事情。这时候怎么获 ... -
JSP中文乱码的产生原因及解决方案-转
2013-05-15 17:33 2400JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常 ... -
责任链模式(转)
2011-11-22 21:38 1087责任链模式是一种对象的行为模式。 在责任链模 ... -
Spring Aspectj的使用
2011-11-03 15:25 1339Applicationcontext.xml代码 ... -
JS中的原型方法prototype
2011-11-01 11:03 1024JS中的phototype是JS中比较难理解的一个部分 ... -
java动态代理--JDK
2011-10-30 18:04 929JAVA的动态代理 代理模式 代理模式是常用的java ... -
Hibernate更新某些字段的几种update方法
2011-09-20 22:48 1773Hibernate 中如果直接使用 Session.up ... -
Hibernate的merge与update方法的区别
2011-09-20 22:47 974今天做了个测试,写了个测试用例来看看merge与update时 ... -
Hibernate学习:Transient、Persistent、Detached三个状态
2011-09-19 22:15 1437Transient、Persistent、Detached是H ... -
Hibernate中get和load方法的区别
2011-09-19 22:10 1022load加载方法: Users user = ... -
sping源码分析之properties操作(转载) .
2011-09-15 14:36 1178目前在开发的过程中遇到:通过spring在后台对前台 ... -
勉励继续写技术博客
2011-09-03 15:50 864最近一直就没怎么写博客,由于各种原因吧,客观的还有主观的 ... -
学习自定义标签----BodyTagSupport(转)
2011-07-08 10:48 2136这几天学习了一 ... -
Quartz学习笔记(二)
2011-01-25 21:34 1094下面给出一些表达式实例: 表示 ... -
Quartz学习笔记(一)
2011-01-25 21:33 1911Quartz特点 1) Quartz能嵌入到任何独立的 ... -
(转)Ant 学习笔记(二)
2011-01-25 21:20 1977ANT常用任务:Copy Tasks 注意:本节笔记中所 ... -
(转)Ant 学习笔记(一)
2011-01-25 21:18 1402安装与配置 下载地址:http://ant.ap ... -
实现数据库查询分页Mysql
2010-11-06 10:05 1231//最近在笔试中遇到了一个要求写连接数据库及数据分页的 ...
相关推荐
总结来说,从Oracle的BLOB类型字段中提取并转换到MySQL的过程涉及到查询、导出、上传等多个步骤。在实际操作中,需要对数据库API有深入理解,并注意数据的兼容性和性能优化。通过以上方法,你可以顺利地在两个数据库...
### Oracle Blob字段上传与下载详解 #### 一、概述 在数据库系统中,二进制大对象(Binary Large Object,简称BLOB)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。Oracle数据库支持Blob...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
根据提供的标题、描述以及部分代码内容,我们可以整理出关于如何在Spring框架中处理Oracle数据库中的BLOB类型数据的相关知识点。 ### 一、BLOB类型简介 BLOB(Binary Large Object)是二进制大对象的缩写,通常...
在Oracle SQL中,可以使用`empty_blob()`函数创建一个空的BLOB对象。 ```java // 获取一个空的BLOB对象 oracle.sql.BLOB emptyBlob = (oracle.sql.BLOB) conn.createBlob(); ``` ##### 4.3 设置BLOB数据 接下来...
总结来说,MySQL和Oracle都提供了插入Blob数据的能力,但具体的实现细节因数据库系统而异。在实际开发中,你需要根据所使用的数据库系统选择合适的API和方法来处理Blob数据。提供的源码示例可作为参考,根据实际情况...
总结起来,MyBatis与Oracle结合处理BLOB字段时,关键步骤包括:正确设置数据库表结构,创建相应的Java实体类,以及编写MyBatis映射文件来定义SQL查询和操作。理解这些概念和操作,能帮助你在实际开发中更有效地管理...
总结,通过上述步骤,我们成功地利用Java将MP3文件存储到Oracle数据库的BLOB字段,并能够从中检索出来。这个过程涉及到数据库连接、SQL操作、文件I/O以及BLOB数据类型的处理。在实际应用中,需要考虑异常处理、事务...
总结而言,使用JDBC操纵Oracle数据库中的BLOB字段,无论是通过现代的`setBinaryStream`方法还是古老的分步写入策略,都能有效实现对多媒体数据的高效管理。开发者应根据具体的应用需求和环境选择最合适的操作方式。
在使用 Java 进行 Oracle 数据库操作时,理解 Blob 和 Clob 类型及其操作方法至关重要。通过合理选择 JDBC 版本和适配容器特性,可以有效地管理大容量数据,提高应用程序的性能和稳定性。此外,还需要关注不同容器...
为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...
总结来说,MySQL和Oracle在处理`CLOB`和`BLOB`字段时都有其独特的方法和优缺点。理解这些差异对于开发和维护高效、可扩展的数据库系统至关重要。实际应用中,开发者应根据具体业务需求和性能指标,选择合适的数据...
总结一下,处理Oracle数据库中的Blob数据,你可以选择使用原生的JDBC,这更底层,适合对数据库操作有更多控制的需求。而Hibernate提供了一种更高级、面向对象的方式,简化了数据库操作,但可能带来额外的学习成本。...
总结来说,Oracle数据库中的CLOB和BLOB类型是处理大量文本和二进制数据的关键。在JDBC中,我们可以通过`PreparedStatement`进行高效且安全的插入、更新和查询操作。理解如何正确地使用这些数据类型和相关的JDBC方法...
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
总结起来,这个项目实现了将Java生成的二维码图片通过Oracle触发器转换为BLOB,并存储到数据库表中,这在需要在数据库中存储和检索二维码图像的场景下非常有用。同时,这也展示了Java和Oracle数据库的集成能力,以及...
### 在VC6中使用ADO读取Oracle中的BLOB字段 #### 概述 在软件开发过程中,经常需要处理数据库中的二进制大对象(BLOB)字段,如图像、音频或视频文件等。本文将详细介绍如何在Visual C++ 6.0(VC6)环境下使用...
在IT行业中,jQuery、Oracle Blob、JSP以及图片处理是常见的技术领域,这些技术常常结合在一起用于构建功能丰富的Web应用程序,特别是涉及到图像上传和显示的场景。以下是对这些知识点的详细说明: 首先,jQuery是...
- 当使用 Oracle 数据库时,需要引入 Oracle 的 JDBC 驱动,并且在处理 BLOB 对象时需要导入 `oracle.sql.BLOB` 类。 - 为了提高效率和安全性,可以考虑使用事务来保证数据的一致性。 ### 2. 处理图片上传和显示的...