Java读取Oracle BLOB字段存储图片教程
5星 · 超过95%的资源 需积分: 47 19 浏览量
更新于2024-09-16
4
收藏 4KB TXT 举报
"这篇文章主要介绍了如何在Java程序中读取Oracle数据库中BLOB类型字段存储的图片。通过使用Java的JDBC连接Oracle数据库,获取BLOB字段并将其转化为字节数组,从而实现图片的读取和处理。"
在Java开发中,有时我们需要从Oracle数据库中读取BLOB(Binary Large Object)类型的数据,比如存储的图片。Oracle数据库常用来存储大对象,如图像、音频或视频文件等。以下是一个示例代码,展示了如何在Java中读取Oracle数据库中BLOB字段存储的图片。
首先,确保已引入了JDBC驱动,以便与Oracle数据库建立连接。通常,你需要在项目中添加ojdbc.jar库。接下来,可以创建一个名为`QueryPhoto`的Java类,并使用`DataSourceFactory`来获取数据库连接。这个`DataSourceFactory`通常是用于管理数据库连接池的工具类。
```java
package app.jxgl.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import common.utils.DataSourceFactory; // 假设这是你的数据源工厂类
public class QueryPhoto {
Connection conn = null;
String sql = "";
public byte[] getImgByteById(int id) {
byte[] data = null;
try {
conn = DataSourceFactory.getFactory().getConnection(); // 获取数据库连接
sql = "select id, zp from t_wlsgry where id=" + id; // 构建SQL查询语句,假设zp是BLOB类型的图片字段
Statement stat = conn.createStatement();
ResultSet res = stat.executeQuery(sql); // 执行查询
if (res.next()) {
// 从结果集中获取BLOB字段
java.sql.Blob blob = res.getBlob("zp");
InputStream inStream = blob.getBinaryStream(); // 获取BLOB的输入流
// 将BLOB数据转换为字节数组
long nLen = blob.length(); // 获取BLOB的长度
data = new byte[(int) nLen];
int readCount = 0, totalRead = 0;
while ((readCount = inStream.read(data, totalRead, (int) (nLen - totalRead))) != -1) {
totalRead += readCount;
}
inStream.close(); // 关闭输入流
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null)
conn.close(); // 关闭数据库连接
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return data;
}
}
```
在`getImgByteById`方法中,我们通过ID查询到包含图片信息的记录,然后使用`getBlob`方法从`ResultSet`中获取BLOB对象。接着,我们打开BLOB的二进制流,并将数据读入到一个字节数组中。最后,关闭输入流和数据库连接,以释放资源。
这段代码的执行流程如下:
1. 连接到Oracle数据库。
2. 构造SQL查询语句,查询指定ID的图片信息。
3. 执行查询,如果结果集中有数据,获取BLOB字段。
4. 从BLOB字段中获取输入流,读取字节数据并存储到字节数组。
5. 关闭输入流和数据库连接。
通过这种方式,你可以将Oracle数据库中的BLOB字段转换为Java程序可以处理的字节数组,进而进行图片的展示或其他处理。这种方法适用于需要动态加载数据库中图片的Web应用或桌面应用。
2012-03-19 上传
2023-04-09 上传
2023-06-06 上传
2023-07-14 上传
2024-09-11 上传
2023-07-14 上传
2023-07-11 上传
qq1164429680
- 粉丝: 0
- 资源: 11
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全