`

Clob,Blob,InputStream,byte 互转

阅读更多
一、byte[]=>Blob

我们可以通过Hibernate提供的表态方法来实现如:
org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]);


二、Blob=>byte[]
/**
* 把Blob类型转换为byte数组类型
* @param blob
* <a href="http://my.oschina.net/u/556800" target="_blank" rel="nofollow">@return</a> 
*/
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[]

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
InputStream is = new ByteArrayInputStream(new byte[1024]);


五、InputStream => Blob
可通过Hibernate提供的API:

Hibernate.createBlob(new FileInputStream(" 可以为图片/文件等路径 "));


六、Blob => InputStream
Blog转流,可通过提供的API直接调用:
new Blob().getBinaryStream();


七、Clob转InputStream
InputStream fileOs=null;
Clob clob= res.getClob("XXXX");
int i=0;
fileOs = clob.getAsciiStream();
int len = (int)clob.length();
byte by[] = new byte[len];
try {
    while(-1 != (i = fileOs.read(by, 0, by.length))){
         fileOs.read(by, 0, i);
    }
} catch (IOException e) {
     e.printStackTrace();
}


以上均为转载:http://my.oschina.net/zimingforever/blog/81691
分享到:
评论

相关推荐

    oracle中的Blob和Clob区别

    InputStream inStream = blob.getBinaryStream(); byte[] data = new byte[inStream.available()]; inStream.read(data); inStream.close(); } inStream.close(); con.commit(); con.close(); ``` #### ...

    JDBC中操作Blob、Clob等对象

    ### JDBC中操作Blob、Clob等对象 #### 一、简介 在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob...

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

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

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

    byte[] b = new byte[1024]; int d; while((d=in.read(b))!=-1){ ops.write(b,0,d); } ops.flush(); in.close(); ops.close(); ``` 最后,我们需要将文件中的数据读取出来,并将其设置到 Oracle 的 CLOB 字段中: `...

    Hibernate对BLOB CLOB操作

    为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate提供的方法。例如,你可以使用FileInputStream读取文件,然后将它转换为BLOB,类似地,使用...

    Hibernate对Blob,Clob的操作

    在保存数据时,Blob可以接收FileInputStream或byte[]作为参数,Clob则接受String: ```java // 对于Blob byte[] imageData = ...; // 从文件或网络获取 session.saveOrUpdate(entity); entity.setBinaryData(new ...

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

    InputStream input = clob.getAsciiStream(); int len = (int) clob.length(); byte[] by = new byte[len]; int i; while (-1 != (i = input.read(by, 0, by.length))) { input.read(by, 0, i); } rtn = new...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    InputStream inStream = blob.getBinaryStream(); byte[] data = new byte[inStream.available()]; inStream.read(data); inStream.close(); } con.commit(); con.close(); ``` 写入BLOB数据 写入BLOB数据主要...

    hibernate中处理大字段 网上收集的文档

    Hibernate支持通过`InputStream`和`OutputStream`操作BLOB,而CLOB可以通过`Reader`和`Writer`进行处理。 2. 分离大字段:考虑将大字段存储在独立的表中,通过外键关联,减少主表的大小,提高查询效率。 3. 缓存...

    java存取oracle中的COLB类型数据.docx

    与CLOB相对应的是BLOB(Binary Large Object),用于存储二进制数据如图片、音频等。 Java提供了`java.sql.Clob`类来处理CLOB数据,主要提供了以下两个方法来读取CLOB数据: 1. **`getCharacterStream()`**:返回...

    Java对db2中大对象的操作

    大对象包括BLOB(Binary Large Object)和CLOB(Character Large Object),分别用于存储二进制数据和字符数据。在这个教程中,我们将探讨如何在DB2数据库中使用Java进行BLOB对象的写入和读取。 首先,让我们了解...

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

    Oracle的大对象存取通常涉及PL/SQL过程,但在Java中,可以通过JDBC的Blob和Clob接口进行操作。以下是一个Java示例,展示了如何在Oracle中存取BLOB: ```java CallableStatement cs = conn.prepareCall("{ call proc...

    JDBC中的Results相关函数

    对于Blob和Clob类型,直接获取对应的对象可以更好地管理大对象数据。 总之,ResultSet的getXxx()方法是JDBC编程中获取查询结果的关键,它们允许开发者以适当的数据类型访问数据库中的每一条记录,从而实现对数据库...

    day14--dbutils的使用_事务处理_多表操作_oracle大数据处理

    byte[] bytes = blob.getBytes(1, (int) blob.length()); try { Files.write(Paths.get("path/to/output.jpg"), bytes); } catch (IOException e) { e.printStackTrace(); } ``` 综上所述,DBUtils不仅简化...

Global site tag (gtag.js) - Google Analytics