`
JavaLuSir
  • 浏览: 19048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.sql.Blob、byte[]、InputStream之间的相互转换

阅读更多
在我们的程序开发当中,经常会用到java.sql.Blob、byte[]、InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util.
一、byte[]=>Blob
我们可以通过Hibernate提供的表态方法来实现如:
org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]);
二、Blob=>byte[] 目前没有找到好一点的API提供,所以只能自已来实现。
示例如下:
Java代码 
/**
* 把Blob类型转换为byte数组类型
* @param blob
* @return
*/ 
private byte[] blobToBytes(Blob blob) { 
 
BufferedInputStream is = null; 
 
try { 
is = new BufferedInputStream(blob.getBinaryStream()); 
byte[] bytes = new byte[(int) blob.length()]; 
int len = bytes.length; 
int offset = 0; 
int read = 0; 
 
while (offset < len && (read = is.read(bytes, offset, len - offset)) >= 0) { 
offset += read; 

return bytes; 
} catch (Exception e) { 
return null; 
} finally { 
try { 
is.close(); 
is = null; 
} catch (IOException e) { 
return null; 



  三、InputStream=>byte[]
Java代码 
private byte[] InputStreamToByte(InputStream is) throws IOException {   
 
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();   
int ch;   
while ((ch = is.read()) != -1) {   
bytestream.write(ch);   
}   
byte imgdata[] = bytestream.toByteArray();   
bytestream.close();   
 
return imgdata;   
}   
四、byte[] => InputStream byte[]到inputStream之间的转换很简单:
InputStream is = new ByteArrayInputStream(new byte[1024]);
五、InputStream => Blob
可通过Hibernate提供的API:Hibernate.createBlob(new FileInputStream(" 可以为图片/文件等路径 "));
六、Blob => InputStream
Blog转流,可通过提供的API直接调用:new Blob().getBinaryStream();
以上片段可作为读者参考。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sukyle/archive/2010/05/29/5632713.aspx
分享到:
评论

相关推荐

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    为了解决这一问题,我们需要采用一种方法来安全地实现这两种类型的相互转换。 #### 二、解决方案 为了解决 WebLogic 下 Oracle CLOB 类型转换的问题,可以通过反射机制来调用 `weblogic.jdbc.wrapper.Clob_oracle_...

    java对oracle数据库中blob字段的处理

    在Java中,读取Oracle数据库中的BLOB字段通常通过`java.sql.Blob`类实现。这个类提供了多种方法来处理BLOB数据,例如`getBytes(long pos, int length)`用于获取BLOB的一部分或全部内容。以下是一个简单的示例: ```...

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

    java.sql.Blob blob = res.getBlob("zp"); InputStream inStream = blob.getBinaryStream(); try { // 获取图片数据长度 long nLen = blob.length(); int nSize = (int) nLen; data = new byte[nSize]; ...

    Java 类型相互转换byte[]类型,Blob类型详细介绍

    在Java编程中,数据存储和传输常常涉及到不同类型的数据转换,特别是在数据库操作中,与二进制大数据相关的类型如`byte[]`(字节数组)和`Blob`(Binary Large Object)之间的转换尤为常见。本篇文章将详细讲解如何...

    oracle_java_blob

    InputStream is = blob.getBinaryStream(); Files.copy(is, Paths.get("recovered_" + mp3File.getName()), StandardCopyOption.REPLACE_EXISTING); } } } ``` 总结,通过上述步骤,我们成功地利用Java将MP3...

    java读取大字段blob类型

    4. **读取BLOB数据**:通过`ResultSet`获取到`BLOB`对象,并将其转换为`InputStream`进行读取。 ```java if (rs.next()) { oracle.sql.BLOB content = (oracle.sql.BLOB) rs.getBlob("content"); ...

    【IT十八掌徐培成】Java基础第24天-01.Blob字段操作.zip

    Blob是Java.sql包中的一个接口,它定义了用于操作大对象的方法。在关系型数据库中,Blob类型通常用于存储大于数据库系统所能处理的普通字节串的数据。 1. **插入Blob数据**: 在Java中,我们需要先创建一个Blob...

    java将图片写入数据库,并读出来(blob clob)

    这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...

    Java+MySql图片数据保存与读取的具体实例

    byte[] imageBytes = blob.getBytes(1, (int) blob.length()); outputStream.write(imageBytes); outputStream.flush(); System.out.println("图片已成功从数据库读取"); } } catch (SQLException | ...

    在Oracle中存取BLOB对象实现文件的上传和下载.txt

    - 将结果集中的BLOB对象转换为适当的类型(如`oracle.sql.BLOB`或`weblogic.jdbc.vendor.oracle.OracleThinBlob`)。 - **读取BLOB数据并写入文件:** - 获取BLOB对象的输入流`getBinaryInputStream()`。 - 创建...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary ...综上所述,Java中的Blob字段操作涉及到数据库连接、SQL预处理、数据转换等技术,是存储和检索非结构化数据的关键。理解并熟练掌握这些步骤,将有助于实现高效、可靠的文件存储解决方案。

    oracle中读取blob字段.doc

    oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3); ``` ##### 3.5 将BLOB数据写入文件 最后一步是将BLOB数据写入到本地文件系统中的某个文件。这通常通过`InputStream`和`OutputStream`对象来实现。 ``...

    Hibernate对BLOB CLOB操作

    在Java的持久化框架Hibernate中,BLOB和CLOB是用来处理大数据对象(Binary Large Object和Character Large Object)的。这两个类型常用于存储图像、视频、大文本等数据,因为它们可以容纳超过数据库标准列大小限制的...

    利用Java向Oracle中插入图片&#40;BLOB&#41;文件.doc

    ### 使用Java向Oracle数据库插入图片(BLOB)文件 #### 一、概述 本文将详细介绍如何使用Java通过JDBC向Oracle数据库中插入图片文件的方法。此过程涉及到的主要技术包括Java编程语言、Oracle数据库以及JDBC驱动。...

    Hiberante读取BLOB数据类型.

    写入BLOB数据的过程相对复杂,因为它涉及到将Java对象转换为二进制流。通常我们会先将二进制数据写入一个临时文件,然后再读取这个文件来创建Blob对象: ```java // 假设byteData是待存入数据库的二进制数据 ...

    Hibernate读取blob字段

    在Hibernate中,Blob对象与Java的java.sql.Blob接口相对应,用于操作这些大对象。 1. **配置Hibernate映射文件(Hibernate Mapping File)** 在Hibernate的映射文件(.hbm.xml)中,我们需要为Blob字段定义一个...

    Java对db2中大对象的操作

    2. **预编译SQL语句**:为了插入或更新包含BLOB的记录,我们需要一个能接受BLOB值的SQL语句。使用`PreparedStatement`来预编译SQL,这样可以提高性能并防止SQL注入攻击。 ```java String sql = "INSERT INTO TABLE_...

    如何将如片插入到数据库(多种方法)

    oracle.sql.BLOB blob = (BLOB) rs.getBlob(2); OutputStream os = blob.getBinaryOutputStream(); FileInputStream fi = new FileInputStream("E:\\test.mp3"); byte[] buff = new byte[1024]; int len = fi....

    oracle中的Blob和Clob区别

    java.sql.Blob blob = rs.getBlob("BLOBATTR"); InputStream inStream = blob.getBinaryStream(); byte[] data = new byte[inStream.available()]; inStream.read(data); inStream.close(); } inStream.close...

    mysql,sqlserver,oracle三种数据库的大对象存取解析.docx

    ### MySQL、SQL Server、Oracle 三种数据库的大对象存取解析 #### 一、MySQL 大对象存取 在 MySQL 中,处理大对象通常涉及到 Blob 类型。Blob 是 Binary Large Object 的缩写,用来存储二进制数据。MySQL 提供了四...

Global site tag (gtag.js) - Google Analytics