java blob 转 byte
时间: 2023-08-29 08:13:32 浏览: 46
以下是将 Java Blob 转换为 byte 数组的示例代码:
```java
Blob blob = resultSet.getBlob("blob_column");
byte[] bytes = blob.getBytes(1, (int) blob.length());
```
在上面的代码中,我们首先从 ResultSet 中获取 Blob 对象,然后使用 `getBytes()` 方法将其转换为 byte 数组。该方法的第一个参数是起始位置,第二个参数是要读取的字节数。在这里,我们将从 Blob 的第一个字节开始读取所有字节。
请注意,这种方法可能会导致内存问题,因为它将整个 Blob 存储在内存中。如果 Blob 太大,可能会导致 OutOfMemoryError。在这种情况下,您可以使用 `getBinaryStream()` 方法获取 Blob 的输入流,并逐个读取字节。
相关问题
java blob转byte_Clob,Blob,InputStream,byte 互转
Java 中 Blob 和 Clob 是 JDBC API 中的两种数据类型,Blob 表示二进制数据,Clob 表示文本数据。InputStream 和 byte[] 则是 Java 中常用的二进制数据处理方式。
下面是 Blob 和 byte[] 之间的相互转换:
1. Blob 转 byte[]
```java
Blob blob = resultSet.getBlob("blob_column");
byte[] data = blob.getBytes(1, (int) blob.length());
```
2. byte[] 转 Blob
```java
byte[] data = ...;
Blob blob = connection.createBlob();
blob.setBytes(1, data);
```
下面是 Blob 和 InputStream 之间的相互转换:
1. Blob 转 InputStream
```java
Blob blob = resultSet.getBlob("blob_column");
InputStream inputStream = blob.getBinaryStream();
```
2. InputStream 转 Blob
```java
InputStream inputStream = ...;
Blob blob = connection.createBlob();
OutputStream outputStream = blob.setBinaryStream(1);
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
```
下面是 Blob 和 Clob 之间的相互转换:
1. Blob 转 Clob
```java
Blob blob = resultSet.getBlob("blob_column");
Clob clob = connection.createClob();
Writer writer = clob.setCharacterStream(1);
InputStream inputStream = blob.getBinaryStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
writer.write(new String(buffer, 0, bytesRead, "UTF-8"));
}
```
2. Clob 转 Blob
```java
Clob clob = resultSet.getClob("clob_column");
Blob blob = connection.createBlob();
OutputStream outputStream = blob.setBinaryStream(1);
Reader reader = clob.getCharacterStream();
char[] buffer = new char[4096];
int charsRead = -1;
while ((charsRead = reader.read(buffer)) != -1) {
outputStream.write(new String(buffer, 0, charsRead).getBytes("UTF-8"));
}
```
java string转blob
以下是将Java中的String转换为Blob的示例代码:
```java
String str = "Hello, world!";
byte[] bytes = str.getBytes(); // 将字符串转换为字节数组
Blob blob = new SerialBlob(bytes); // 将字节数组转换为Blob
```
注意,这里使用了`SerialBlob`类来创建Blob对象。如果你使用的是JDBC驱动程序支持JDBC 4.2规范,可以使用`javax.sql.rowset.serial.SerialBlob`类。如果你使用的是旧版本的JDBC驱动程序,可以使用`oracle.sql.BLOB`或`oracle.sql.CLOB`类。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)