`

Oracle中blob类型的读取

阅读更多
虽然用blob的情况不多,但是还是得了解一下,网上看得有点乱,而且没有看到从数据读blob的。在此总结一下:
数据库中的建表语句如下:
create table blogtest(id number primary key,name varchar2(20),picture blob);
package August;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class OracleBlobTest {
	public static void main(String[] args) {

	}
	public static void readBlob() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:1521/july", "scott",
					"snaillocke");
			Statement st = conn.createStatement();
			PreparedStatement ps = conn.prepareStatement("select * from BLOBTEST where id = ?");
			ps.setInt(1, 1);
			ResultSet rs = ps.executeQuery();
			rs.next();
			oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);

			// 将二进制数据写入BLOB
			try{
			FileOutputStream outStream = new FileOutputStream("D:/oracleback.png");
			InputStream inStream = imgBlob.getBinaryStream();
			byte[] buf = new byte[10240];
			int len;
				while ((len = inStream.read(buf)) > 0) {
					outStream.write(buf, 0, len);
				}
				inStream.close();
				outStream.close();
			}catch(Exception e) {
				e.printStackTrace();
			}
			

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static void writeBlob() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection(
					"jdbc:oracle:thin:@127.0.0.1:1521/july", "scott",
					"snaillocke");
			Statement st = conn.createStatement();
			// 插入一个空对象empty_blob()
			// 锁定数据行进行更新,注意“for update”语句
			PreparedStatement ps = conn.prepareStatement("insert into BLOBTEST (ID, NAME, PICTURE) values (1,'fang.jpg',?)");
			// 通过ORALCE.SQL.BLOB/CLOB.EMPTY_LOB()构造空BLOB/CLOB对象
			ps.setBlob(1, oracle.sql.BLOB.empty_lob());
			ps.execute();
			ps.close();

			// 再次对读出BLOB/CLOB句柄
			ps = conn
					.prepareStatement("SELECT * FROM BLOBTEST WHERE ID=? FOR UPDATE");
			ps.setInt(1, 1);

			ResultSet rs = ps.executeQuery();
			rs.next();

			oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);

			// 将二进制数据写入BLOB
			try{
			FileInputStream inStream = new FileInputStream("D:/My Pictures/oracle.png");
			OutputStream outStream = imgBlob.getBinaryOutputStream();
			byte[] buf = new byte[10240];
			int len;
				while ((len = inStream.read(buf)) > 0) {
					outStream.write(buf, 0, len);
				}
				inStream.close();
				outStream.close();
			}catch(Exception e) {
				e.printStackTrace();
			}

			// 再将Blob字段更新到数据库
			ps = conn
					.prepareStatement(" update BLOBTEST set PICTURE=?");
			ps.setBlob(1, imgBlob);
			ps.executeUpdate();

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}


以上代码必须导入Oracle驱动包
分享到:
评论

相关推荐

    oracle blob转文件读取

    ### Oracle Blob类型转换为文件读取的相关知识点 ...通过以上内容,我们可以了解到如何在C#中实现Oracle数据库中Blob类型的读取和保存操作。这对于处理数据库中的多媒体文件等二进制数据非常有用。

    oracle中的BLOB(照片)转换到mysql中

    总结来说,从Oracle的BLOB类型字段中提取并转换到MySQL的过程涉及到查询、导出、上传等多个步骤。在实际操作中,需要对数据库API有深入理解,并注意数据的兼容性和性能优化。通过以上方法,你可以顺利地在两个数据库...

    oracle中读取blob字段.doc

    ### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...

    使用JDBC4.0操作Oracle中BLOB类型的数据方法

    在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...

    oracle(blob转换为clob)

    在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...

    java中读取ORACLE中BLOB字段存储的图片

    ### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...

    C#访问oracle数据库类,带blob字段读写

    在C#中,我们使用`OracleDbType.Blob`类型来处理Blob字段。读取Blob字段时,可以创建一个`OracleBinary`对象,然后使用`GetValue`方法获取Blob数据。写入Blob字段时,先创建`OracleParameter`对象,将其Direction...

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    本篇文章将详细探讨如何将ORACLE数据库中的BLOB(Binary Large Object)字段导入到SQL SERVER中的IMAGE字段,这通常涉及到数据转换、数据迁移以及可能的数据类型兼容性问题。 首先,让我们了解BLOB和IMAGE字段的...

    oracle查询blob字段照片(jpeg) 像素大小sql

    当处理Blob类型的数据时,通常会使用Oracle提供的包`DBMS_LOB`来进行操作,因为它提供了丰富的函数和过程来读取、写入、拷贝以及处理Blob数据。 ### 2. JPEG格式的图片 JPEG(Joint Photographic Experts Group)...

    java读取大字段blob类型

    本文将详细介绍如何在Java中有效地读取`BLOB`类型的大字段,帮助解决程序员们常遇到的难题。 #### BLOB类型的概述 `BLOB`类型是关系型数据库中用于存储大量二进制数据的一种数据类型。它适用于存储诸如图片、声音...

    Mybatis 处理 CLOB、BLOB 类型数据

    在 Oracle 数据库中,BLOB 类型对应的数据库类型是 BLOB,在 MySQL 中对应的类型是 BLOB。 MyBatis 提供了对 CLOB 和 BLOB 类型的内置支持,通过将 CLOB 类型映射到 Java 的 String 类型,BLOB 类型映射到 byte[] ...

    深入浅析mybatis oracle BLOB类型字段保存与读取

    本篇文章将深入剖析如何使用MyBatis框架在Oracle数据库中对BLOB类型字段进行保存和读取。 首先,BLOB字段设计用于存储非结构化的二进制大数据,如图像、音频文件或任何其他形式的字节流。相反,CLOB字段则适用于...

    批量导出ORACLE数据库BLOB字段生成文件

    Oracle数据库是全球广泛使用的大型企业级数据库管理系统,它支持多种数据类型,包括BLOB(Binary Large Object),用于存储图像、文档等二进制大对象。本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成...

    oracle中blob 字段类型的应用

    Oracle中的Blob字段类型是用于存储大量二进制数据的数据类型,比如图像、音频或大型文档。Blob代表Binary Large Object,其最大容量可达4GB。在Oracle数据库中,Blob与Clob(Character Large Object)、Bfile和Nclob...

    Oracle中Blob字段的写入处理

    此文档是对于oracle数据库中blob类型字段二进制大对象的读取和解析

    sql server中的image类型的数据导出到oracle的clob字段中

    我们使用了 Java 语言和 JDBC 驱动程序来实现数据的导出,并将 Image 类型数据写到文件中,然后将文件中的数据读取出来,并将其设置到 Oracle 的 CLOB 字段中。这种方法可以帮助我们实现不同数据库管理系统之间的...

    图片存入Oracle中,用clob和blob两种方式

    下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...

    oracle blob 字段 读写 delphi

    Oracle数据库中的BLOB(Binary Large Object)字段是用来存储大量二进制数据的,例如图片、文档或音频文件。在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对...

    使用hibernate对oracle读取blob

    本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...

Global site tag (gtag.js) - Google Analytics