- 浏览: 321220 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
lst923:
...
java 实现图片裁剪 -
kakarottoz:
多谢博主分享,正好用到!
java 实现图片裁剪 -
Vcb:
http://osgi.jxtech.net 是一个完全基于O ...
OSGi介绍 -
Vcb:
是一个完全基于OSGi的开发平台,有在线演示,免费插件可供下 ...
OSGi介绍 -
mikey_5:
谢谢分享,原来设置: style="word-bre ...
td内容自动换行
jdbc 插入、读取oracle blob字段
原文参考:http://blog.csdn.net/zhyuh_perl/article/details/7247324
package com.ssgm.jyu.jdbc; import java.io.*; import java.sql.*; import oracle.sql.*; import oracle.jdbc.*; public class JdbcBlob { public static void main(String[] args){ Connection conn = null; Statement stmt = null; try{ Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(ClassNotFoundException e){ e.printStackTrace(); } try{ conn = DriverManager.getConnection("jdbc:oracle:thin:@Host:1521:SID","username","passwd"); stmt = conn.createStatement(); conn.setAutoCommit(false); String sourceDir = "C:\\temp\\"; String targetDir = "C:\\temp\\retrieved\\"; String fileName = "cbr_order_version.dmp"; System.out.println("Writing BLOB to blob_content..."); writeBLOB(stmt,sourceDir+fileName); System.out.println("Reading BLOB from blob_content..."); readBLOB(stmt,fileName,sourceDir,targetDir); } catch(SQLException e){ e.printStackTrace(); } finally{ try{ stmt.close(); conn.close(); } catch(SQLException e){ e.printStackTrace(); } } } public static void writeBLOB(Statement stmt, String fullName){ ResultSet blobRS = null; try{ String sqlInsert = "INSERT INTO blob_content VALUES ('"+fullName+"',EMPTY_BLOB())"; String sqlSelect = "SELECT blob_column FROM blob_content WHERE file_name='"+fullName+"' FOR UPDATE"; //step1: initialize the LOB column to set the LOB locator stmt.executeUpdate(sqlInsert); //step2: retrieve the row containing the LOB locator blobRS = stmt.executeQuery(sqlSelect); blobRS.next(); //step3: create a LOB obj and read the LOB locator BLOB myBlob = ((OracleResultSet) blobRS).getBLOB("blob_column"); //step4: get the chunksize of the LOB from the LOB object int chunkSize = myBlob.getChunkSize(); //step5: create a buffer to hold a block of data from the file byte[] byteBuffer = new byte[chunkSize]; //step6: create a file obj to open the file File file = new File(fullName); //step7: create an input stream obj to read the file contents FileInputStream in = new FileInputStream(file); //step8: read the file contents and write it to the LOB long position = 1; int bytesRead; while((bytesRead = in.read(byteBuffer)) != -1){ //write the buffer contents to myBlob myBlob.setBytes(position, byteBuffer); position += bytesRead; } //step9: commit stmt.execute("COMMIT"); //step10: close the objects used to read the file in.close(); blobRS.close(); System.out.println("Wrote content from "+fullName+" to BLOB\n"); } catch(SQLException e){ System.out.println("Error Code: "+e.getErrorCode()); System.out.println("Error Message: "+e.getMessage()); e.printStackTrace(); } catch(IOException e){ System.out.println("Error Message: "+e.getMessage()); e.printStackTrace(); } } public static void readBLOB( Statement stmt, String fileName, String sourceDir, String targetDir){ String sqlSelect = "SELECT blob_column FROM blob_content WHERE file_name='"+ sourceDir+fileName+"'"; ResultSet blobRS = null; try{ //step1: retrieve the row containing the BLOB locator blobRS = stmt.executeQuery(sqlSelect); blobRS.next(); //step2: create a LOB obj and read the LOB locator BLOB myBlob = ((OracleResultSet) blobRS).getBLOB("blob_column"); //step3: get the chunk size of the LOB from the LOB obj int chunkSize = myBlob.getChunkSize(); //setp4: create a buffer to hold a chunk of data from LOB byte[] byteBuffer = new byte[chunkSize]; //step5: create a file obj String saveFile = targetDir + "retrievedBLOB"+fileName; File file = new File(saveFile); //step6: create output stream obj to write the LOB contents FileOutputStream out = new FileOutputStream(file); //step7: get the long of LOB contents long blobLength = myBlob.length(); //step8: read a chunk of data from myBlob, //then write the buffer contents to file for (long position=1; position<=blobLength; position += chunkSize){ int bytesRead = myBlob.getBytes(position, chunkSize, byteBuffer); out.write(byteBuffer); } //step9: close the stream obj out.close(); System.out.println("Read BLOB and save file"+saveFile); } catch(SQLException e){ System.out.println("Error Code: "+e.getErrorCode()); System.out.println("Error Message: "+e.getMessage()); e.printStackTrace(); } catch(IOException e){ System.out.println("Error Message: "+e.getMessage()); e.printStackTrace(); } } }
原文参考:http://blog.csdn.net/zhyuh_perl/article/details/7247324
发表评论
-
hibernate集合映射inverse和cascade详解
2013-05-04 12:14 944网上转载,出处不详 1、到底在哪用cascade=" ... -
java.lang.UnsupportedClassVersionError
2013-04-03 15:33 1125java.lang.UnsupportedClassVersi ... -
Hibernate实体注解
2013-04-03 15:29 1102转自:http://blog.csdn.net/sleepin ... -
转:Maven实战
2013-03-06 12:54 0转自http://www.iteye.com/topic/11 ... -
Spring定时器在SSH框架中的应用
2013-02-28 14:26 1151转自网络,来源不详.... 并非应用系统中发生的所有事情都是 ... -
ASCII字符集详解
2013-02-19 18:03 4957http://www.crifan.com/files/d ... -
安装eclipse windowbuilder
2013-02-17 10:01 2293windowbuilder,就是原来的SWT Designe ... -
点阵输出字符
2013-02-06 13:38 1225http://www.oschina.net/code/sni ... -
Hibernate主键生成策略
2013-01-28 15:50 8621) assigned 主键由外部程 ... -
结束多层循环
2013-01-23 12:28 1467没有啥意义的东西 public static void m ... -
JDBC Batch 批量插入
2013-01-22 17:02 1097JdbcBatchInsert.java import j ... -
oracle - dbms_output
2013-01-21 10:55 11181、如果dbms_output.put_line的内容不能显示 ... -
SQL not in 疑惑
2013-01-17 16:23 512在sql查询中, select * from t1 wh ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2013-01-17 13:30 938备忘一下: 导入一个工程后,运行时出现java.lang.Un ... -
oracle行转列的应用
2012-12-19 15:02 1076oracle 行转列应用 select t.WELLI ... -
List<Map> 自定义排序
2012-12-19 13:05 2496对list根据自定义方法排序记要 List list = ... -
后台拼接js代码字符串,处理特殊转义字符
2012-12-13 17:51 5322因为在JS程序代码中,如果生成的字符串中包含特殊字符,那程序容 ... -
Oracle 表死锁解除
2012-11-06 15:56 990我是在plsql中处理 1.先查询 select * fro ... -
plsql导出表和数据
2012-11-01 15:57 1376Tools -> Export tables -> ... -
java 实现图片裁剪
2012-10-26 15:04 14917import java.awt.Rectangle; i ...
相关推荐
jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...
在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...
在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...
本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...
总的来说,Java通过JDBC和Oracle JDBC驱动提供了一套完整的工具来操作Oracle数据库中的BLOB类型。无论是在插入、查询、更新还是删除BLOB数据,都需要注意效率和资源管理,以确保程序的稳定性和性能。通过实践和优化...
本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: 1. **创建Blob字段:** 首先需要在数据库表中定义一个Blob类型的字段。 2. **...
Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...
在提供的`Hibernate4_Spring3_Blob_Test`压缩包中,可能包含了使用Hibernate4和Spring3来测试Blob操作的例子。Spring可以帮助管理数据库连接和事务,而Hibernate则提供了方便的对象关系映射,使得处理LOB如同操作...
JDBC读写Oracle的CLOB字段
### JDBC中如何处理Oracle BLOB字段 在Java开发过程中,特别是在使用JDBC(Java Database Connectivity)与Oracle数据库交互时,处理BLOB(Binary Large Object)类型的数据是一项常见的需求。BLOB通常用于存储大量的...
上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...
- JDBC驱动:下载并添加Oracle JDBC驱动到项目的类路径中。 - 开发工具:例如Eclipse或IntelliJ IDEA。 - Java版本:确保安装了JDK,并且配置好了环境变量。 2. **数据库表设计**: - 创建一张包含`BLOB`类型的...
总的来说,JDBC_oracle.zip可能包含了一个示例,展示了如何使用JDBC与Oracle数据库进行交互,包括创建连接、执行SQL、处理结果集以及管理事务等操作。这个.jmx文件可能是JMeter测试计划,用于性能测试或负载测试...
为了能够通过Spring框架操作数据库中的BLOB数据,需要对`sqlMapConfig.xml`进行适当的配置。以下是一个配置示例: ```xml <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" ...
总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...
### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...
本文将详细介绍如何使用Struts结合JDBC操作Oracle数据库中的Blob字段实现文件的保存和读取。 #### 代码分析 根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件...
在Java编程中,Oracle数据库提供了对大型对象(Large Object)的支持,包括CLOB(Character Large Object)和BLOB(Binary Large Object)。这两种类型用于存储大量的文本数据(CLOB)和二进制数据(BLOB),例如...