Java上传bytea类型图片到数据库并读取示例
本篇文章主要介绍了在PostgreSQL(pgsql)数据库环境中进行图片文件操作的过程,涉及到Java编程语言中的数据库连接、PreparedStatement的使用以及文件I/O操作。以下是详细的知识点: 1. 数据库连接与PreparedStatement: 文章首先通过`JDBCUtil.getConnectionELIB()`方法获取到数据库连接`dbConn`,这是使用Java与PostgreSQL交互的基础。接着,创建一个PreparedStatement对象`dbStat`,它是一种预编译的SQL语句,用于执行参数化查询或更新,提高了性能和安全性。 2. 图片文件上传: 在一个for循环中,遍历指定目录下的文件。对于每个文件,程序首先检查文件名是否符合特定格式,提取学号(xjh)并构造SQL插入语句`strSQL`。使用`FileInputStream`读取文件内容,然后通过`dbStat.setBinaryStream(2, inputStream, (int) file_i.length())`设置二进制数据到`zpian`字段。每执行一次SQL后,记录成功上传的文件数量`k`。 3. 更新数据库中的图片信息: 示例展示了如何更新数据库中的图片记录,通过`dbStat.setString(1, xjh)`设置新的值,然后使用`dbStat.setBinaryStream(1, inputStream, (int) filedata.length())`将图片数据替换到`zpian`字段,最后执行SQL更新。 4. 查询和下载图片: 通过`PreparedStatement`执行查询SQL,获取特定条件(如dzzhao='038')下的`zpian`字段值,然后使用`ResultSet`的`getBinaryStream(1)`方法获取到二进制数据。接下来,将这些二进制数据写入新的文件中,以实现图片的下载。 5. 错误处理与日志输出: 代码中包含了一些错误处理和进度报告,如`dbStat.close()`确保关闭资源,以及在每次文件操作后打印当前目录和已上传的文件总数。 总结来说,这篇文章提供了一个在PostgreSQL数据库中使用Java操作图片文件的基本流程,包括上传、更新和查询图片记录,以及相关的文件I/O操作和数据库交互。这在开发Web应用或者管理系统时,对处理用户上传的图片数据具有实际价值。
//上传图片
File filedata=new File("C:\\Users\\Administrator\\Desktop\\东莞市经济贸易学校图书馆新生读者导入原始资料\\2018\\1802班","陈星娴180205.JPG");
String path="C:\\Users\\Administrator\\Desktop";
String filename="180102.JPG";
String strSQL = "";
Connection dbConn = null;
PreparedStatement dbStat = null;
//ResultSet dbRs = null;
dbConn = JDBCUtil.getConnectionELIB();
strSQL="UPDATE lt_dzheinfo SET zpian=? WHERE dzzhao='BY03C000046';";
dbStat = dbConn.prepareStatement(strSQL);
// 设置图片文件
FileInputStream inputStream = new FileInputStream(filedata);
dbStat.setBinaryStream(1, inputStream, (int) filedata.length());
// 执行SQL
dbStat.execute();
dbStat.close();
//下载图片
strSQL="SELECT zpian FROM lt_dzheinfo where dzzhao='038'";
dbStat = dbConn.prepareStatement(strSQL);
ResultSet rs = dbStat.executeQuery();
while (rs.next()) {
InputStream input = rs.getBinaryStream(1);
FileOutputStream outputStream = new FileOutputStream(new File(
path + "\\_" + filename));
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦