- 浏览: 1379320 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
package cn.com.songjy.test.db; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class OracleLob { private static final Log log = LogFactory.getLog(OracleLob.class); private static final String id = "3"; private static final BufferedInputStream bufferedInputStream = new BufferedInputStream( OracleLob.class.getClassLoader().getResourceAsStream( "cn/com/songjy/test/db/oracle.properties")); private static final Properties props = new Properties(); static { try { props.load(bufferedInputStream); Class.forName(props.getProperty("driver")); } catch (IOException e) { log.error(e.getMessage(), e); } catch (ClassNotFoundException e) { log.error(e.getMessage(), e); } finally { try { if (null != bufferedInputStream) bufferedInputStream.close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } public Connection getConnection() throws SQLException { return DriverManager.getConnection(props.getProperty("url"), props.getProperty("user"), props.getProperty("password")); } /** * 保存图片到oracle库中 * * @throws SQLException * @throws IOException */ public void save_blob() throws SQLException, IOException { PreparedStatement preparedStatement = null; Connection connection = null; ResultSet resultSet = null; try { /* 先保存空blob */ connection = getConnection(); connection.setAutoCommit(false);// 必须设置为false,即开启事务! preparedStatement = connection .prepareStatement("INSERT INTO testblob(id,image) VALUES(?,?)"); preparedStatement.setString(1, id); // preparedStatement.setBlob(2, oracle.sql.BLOB.empty_lob());//empty_lob()已过期 preparedStatement.setBlob(2, oracle.sql.BLOB.getEmptyBLOB());// 先存一个空blob,此方法在驱动jar包中 // log.info(preparedStatement.executeUpdate() > 0 ? "保存空blob成功" : "保存空blob失败"); if (preparedStatement.executeUpdate() > 0) { log.info("保存空blob成功,方法继续!"); } else { log.info("保存空blob失败,方法返回!"); connection.rollback(); return; } /* 正式保存文件 */ preparedStatement = connection.prepareStatement("SELECT image FROM testblob WHERE id = ? FOR UPDATE");// 须加for update,锁定该行,直至该行被修改完毕,保证不产生并发冲突 preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedInputStream bufferedInputStream = null; try { bufferedInputStream = new BufferedInputStream( new FileInputStream( "src/main/java/cn/com/songjy/test/db/Jellyfish.jpg"));// 需要保存的文件路径 Blob image = resultSet.getBlob("image"); byte[] buffer = new byte[1024];// 每次读取/写入1k for (int len = 0; (len = bufferedInputStream.read(buffer)) > 0;) { image.setBytes(image.length() + 1, buffer, 0, len);// Blob第一个字节(byte)的位置是从1开始,所以需要+1 } } finally { if (null != bufferedInputStream) bufferedInputStream.close(); } } connection.commit();// 开启了事物,必须手动提交 } finally { if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } /** * 从oracle库中获取图片 * * @throws SQLException * @throws IOException */ public void query_blog() throws SQLException, IOException { PreparedStatement preparedStatement = null; Connection connection = null; ResultSet resultSet = null; try { connection = getConnection(); preparedStatement = connection .prepareStatement("SELECT image FROM testblob WHERE id = ?"); preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedInputStream bufferedInputStream = null; BufferedOutputStream bufferedOutputStream = null; try { bufferedInputStream = new BufferedInputStream( resultSet.getBinaryStream("image")); bufferedOutputStream = new BufferedOutputStream( new FileOutputStream( "src/main/java/cn/com/songjy/test/db/1.jpg"));// 读取后的保存图片路径 byte[] buffer = new byte[1024]; for (int len = 0; (len = bufferedInputStream.read(buffer)) > 0;) { bufferedOutputStream.write(buffer, 0, len); // bufferedOutputStream.flush();//关闭流时会自动刷新 } } finally { if (null != bufferedOutputStream) bufferedOutputStream.close(); if (null != bufferedInputStream) bufferedInputStream.close(); } } } finally { if (null != resultSet) resultSet.close(); if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } public static void main(String[] args) throws SQLException, IOException { // new OracleLob().save_blob(); new OracleLob().query_blog(); } } /* * 本次示例oracle版本是Oracle Database 11g Enterprise Edition Release * 11.2.0.1.0,上传的附件是oracle的驱动jar包 */
相关阅读:
MySQL存取大文本及二进制文件(图片)
- ojdbc5-11.2.0.jar (1.9 MB)
- 下载次数: 13
发表评论
-
ORA-12505, TNS:listener does not currently know of SID given in connect descript
2017-05-11 18:10 1361数据对接时需要连接对方的Oracle数据库,但程序在运行时出错 ... -
java.sql.SQLException: 违反协议: [12]
2014-12-04 13:40 9280表名:V_WJW_IPT_ADMISSIONNOT ... -
oracle收集
2014-08-28 14:04 729sql与oracle中有关case和decode的用法(行转列 ... -
Linux中启动Oracle
2014-07-28 11:33 843一、用oracle用户登录linux系统并执行命令:lsnrc ... -
表空间自动扩展设置
2014-07-19 21:28 1374报错信息: 解决步骤: 1、以管理员的权限登录后执行如下语句 ... -
servlet使用commons-fileupload上传文件示例
2014-01-03 14:32 890private static final Log log = ... -
Java调用ping命令
2013-11-26 10:26 3710package cn.com.songjy; impor ... -
MySQL存取大文本及二进制文件(图片)
2013-10-21 17:03 11867package cn.com.songjy.test.db; ... -
Iterate over rows and cells(EXCEL文件的读取)
2013-09-13 14:13 4096package cn.com.songjy.test.exce ... -
SQL优化之over的使用
2013-08-29 21:26 1276select t.grade, t.losal from sa ... -
Oracle中Union与Union All的区别
2013-01-31 11:16 1316http://weich-javadeveloper.itey ... -
PLSQL Developer保存用户和密码、执行当前SQL语句
2013-01-14 18:12 2207保存用户: Tools-->Preferences--& ... -
oracle 归档数据查询(分区查询)
2013-01-10 13:01 1501查询201212月份数据记录的SQL如下: SELECT CO ... -
oracle之SQL语句查询某个表所占物理空间大小
2013-01-09 13:38 1625select bytes B, bytes/1024 KB, ... -
利用Servlet使用数据流在jsp页面中显示硬盘中的图片
2012-12-21 09:57 4143ShowImageFromDiskServlet.java代码 ... -
Oracle同义词创建及其作用
2012-11-21 16:47 2284Oracle的同义词(synonyms ... -
Oracle解锁用户、新建用户、角色,授权,建表空间
2012-11-16 11:52 1067oracle数据库的权限系统分为系统权限与对象权限。 ... -
ORA-12514 : TNS:监听程序当前无法识别连接描述符中请求的服务
2012-11-05 14:13 1851一、找到监听文件,添加红色部分代码即可,如下: # list ... -
oracle对某个表增(改)字段的sql语句写法
2012-10-26 10:29 1301alter table TAB_SMS_BLACKLI ... -
安装oracle后电脑启动慢的解决办法
2012-10-08 16:55 1456一、进入注册表-services.msc 二、编辑txt文档 ...
相关推荐
1. **Oracle存取图片或二进制数据** Oracle数据库使用BLOB(Binary Large Object)数据类型来存储图片或任何其他二进制数据。BLOB类型可以存储最大4GB的数据,足以容纳大多数图像文件。`OracleUploader.java`可能是...
### PB存取超过32k的二进制文件的实例详解 #### 一、引言 在PowerBuilder(简称PB)开发中,处理大文件尤其是超过32KB大小的二进制文件时,经常会遇到一些挑战。这是因为PB默认对二进制数据的处理有一定的限制。...
1. **读取图片文件**:使用编程语言(如Java、Python、C#)的内置函数读取图片文件,将其转换为二进制数据流。 2. **连接数据库**:建立与数据库的连接,这通常需要数据库驱动程序(如JDBC、ODBC)和正确的连接参数...
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
### Oracle存取文件知识点 #### 一、Oracle Blob数据类型简介 在Oracle数据库中,Blob(Binary Large Object)是一种专门用于存储二进制大数据的对象类型,它可以有效地存储诸如图像、音频文件、视频文件以及任何其他...
尽管通常建议将大型文件存储在文件系统中以提高性能,但在某些情况下,如需增强安全性或简化数据管理,将图片或文件作为二进制数据存储在数据库中可能是更优的选择。 #### 创建数据库表 首先,我们需要在Oracle...
- **保存图片**:将二进制流写入文件,生成图片。 5. **使用工具**: 提供的"**ClobAndBlob**"可能是一个实现上述功能的小工具,它简化了图片存取的过程,提供了对两种方式的接口。用户可以通过这个工具方便地将...
标签"oracle存取图片"和"C#"进一步强调了主要的技术点。使用C#访问Oracle数据库时,需要引用Oracle的数据提供者,配置连接字符串,然后使用ADO.NET对象,如OracleCommand和OracleDataReader,来执行SQL命令和处理...
1. 文件上传:用户通过网页上传图片,文件会被转化为二进制流或者Base64编码。 2. JDBC操作:使用Java的JDBC驱动程序,将图片数据插入到Oracle数据库的BLOB字段中。涉及SQL语句执行,以及PreparedStatement的...
5. **读取图片**:首先,从本地文件系统加载图片,可以使用CFile类读取图片文件内容到内存缓冲区。然后,将这个缓冲区的数据插入到`ImageData`字段。 6. **存储图片**:使用SQL INSERT语句将二进制数据写入数据库。...
1. **加载图片文件**:首先通过`FileInputStream`类读取本地磁盘上的图片文件。 2. **注册Oracle驱动**:使用`Class.forName()`方法注册Oracle JDBC驱动。 3. **建立数据库连接**:通过`DriverManager.getConnection...
### 在Oracle中存取BLOB对象实现文件的上传和下载 #### 核心知识点解析: **一、BLOB数据类型简介** BLOB(Binary Large Object)是数据库中的二进制大对象类型,主要用于存储大量二进制数据,如图像、音频、视频等...
4. Bfile(Binary File,二进制文件):允许对Oracle数据库之外存储的大型二进制文件进行只读形式的访问。与前三种lob类型不同,Bfile存储的数据在一个单独的文件系统文件中,该文件不由Oracle数据库维护。 在...
Oracle提供了多种方式来处理这样的二进制大数据,使得我们能够有效地管理图片和其他非结构化数据。以下是一些关于在Oracle中处理图片存取的关键知识点: 1. **BLOB类型**: Oracle数据库支持BINARY LARGE OBJECT...
在Oracle中,LONG RAW类型用于存储原始二进制数据,而BLOB(Binary Large Object)用于存储可变长度的二进制数据,如图像、音频或视频文件。这两种数据类型使得Oracle能够管理和处理多媒体数据。 JDBC是Java中用于...
Oracle数据库提供了对大对象的存储支持,如CLOB、NCLOB用于存储文本数据,而BLOB和BFILE则用于存储二进制数据,如Excel文件。 文章作者赵鲁东指出,在开发油田作业设备综合评价系统时,面临的问题是Excel文件的存储...
由于Word文件通常包含文本、图片、表格等复杂元素,因此它们属于二进制数据,应使用BLOB类型存储。在Oracle中定义BLOB字段后,可以通过特定的API和方法来读写这些字段中的数据。 在VB6中,可以利用ADO(ActiveX ...
2. **二进制文件操作**:`FileStream`类用于处理二进制文件,可以读取或写入任何类型的数据。`BinaryReader`和`BinaryWriter`是其配套的读写工具。 3. **文件流操作**:`FileStream`不仅用于二进制文件,还可以与...
- **保存**:用户选择新的图片后,PB可以将图片文件读入内存,然后将二进制数据写入到对应的BLOB字段,完成图片的保存。 4. **交互操作**:PB提供了丰富的API和事件,使得开发者可以实现图片的上传、预览、删除等...