一、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
分享到:
相关推荐
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(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob...
这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...
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 字段中: `...
为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate提供的方法。例如,你可以使用FileInputStream读取文件,然后将它转换为BLOB,类似地,使用...
在保存数据时,Blob可以接收FileInputStream或byte[]作为参数,Clob则接受String: ```java // 对于Blob byte[] imageData = ...; // 从文件或网络获取 session.saveOrUpdate(entity); entity.setBinaryData(new ...
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...
InputStream inStream = blob.getBinaryStream(); byte[] data = new byte[inStream.available()]; inStream.read(data); inStream.close(); } con.commit(); con.close(); ``` 写入BLOB数据 写入BLOB数据主要...
Hibernate支持通过`InputStream`和`OutputStream`操作BLOB,而CLOB可以通过`Reader`和`Writer`进行处理。 2. 分离大字段:考虑将大字段存储在独立的表中,通过外键关联,减少主表的大小,提高查询效率。 3. 缓存...
与CLOB相对应的是BLOB(Binary Large Object),用于存储二进制数据如图片、音频等。 Java提供了`java.sql.Clob`类来处理CLOB数据,主要提供了以下两个方法来读取CLOB数据: 1. **`getCharacterStream()`**:返回...
大对象包括BLOB(Binary Large Object)和CLOB(Character Large Object),分别用于存储二进制数据和字符数据。在这个教程中,我们将探讨如何在DB2数据库中使用Java进行BLOB对象的写入和读取。 首先,让我们了解...
Oracle的大对象存取通常涉及PL/SQL过程,但在Java中,可以通过JDBC的Blob和Clob接口进行操作。以下是一个Java示例,展示了如何在Oracle中存取BLOB: ```java CallableStatement cs = conn.prepareCall("{ call proc...
对于Blob和Clob类型,直接获取对应的对象可以更好地管理大对象数据。 总之,ResultSet的getXxx()方法是JDBC编程中获取查询结果的关键,它们允许开发者以适当的数据类型访问数据库中的每一条记录,从而实现对数据库...
byte[] bytes = blob.getBytes(1, (int) blob.length()); try { Files.write(Paths.get("path/to/output.jpg"), bytes); } catch (IOException e) { e.printStackTrace(); } ``` 综上所述,DBUtils不仅简化...