【Java/Oracle】将连续文件写入Blob字段
表:
create table msx0504( id number(12), filename nvarchar2(20), content blob, primary key(id) );
代码:
package com.hy.lab.blob2; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class ContinuousBlobWriter { //-- 以下为连接Oracle数据库的四大参数 private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static final String USER = "luna"; private static final String PSWD = "1234"; public static void main(String[] args){ Connection conn = null; PreparedStatement pstmt = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PSWD); String insertSql="insert into msx0504(id,filename,content) values(?,?,?)"; pstmt = conn.prepareStatement(insertSql); File dir=new File("C:\\temp1\\msx_src_26"); File[] files=dir.listFiles(); int idx=0; for(File file:files){ InputStream is=new FileInputStream(file.getPath()); pstmt.setLong(1,idx); pstmt.setString(2,file.getName()); pstmt.setBlob(3,is); pstmt.executeUpdate(); System.out.println("写入文件"+file.getName()); idx++; } } catch (Exception e) { e.printStackTrace(); } finally { try { pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
查询结果:
SQL> select id,filename,length(content) as len from msx0504; ID FILENAME LEN ---------- ---------------------------------------- ---------- 0 1.jpg 230161 1 10.jpg 211711 2 11.jpg 310264 3 12.jpg 242226 4 13.jpg 194538 5 14.jpg 225705 6 15.jpg 218547 7 16.jpg 196176 8 17.jpg 227857 9 18.jpg 211692 10 19.jpg 142678 ID FILENAME LEN ---------- ---------------------------------------- ---------- 11 2.jpg 212361 12 20.jpg 195689 13 21.jpg 160843 14 22.jpg 221536 15 23.jpg 187784 16 24.jpg 211107 17 25.jpg 178949 18 26.jpg 166578 19 3.jpg 201039 20 4.jpg 248252 21 5.jpg 189575 ID FILENAME LEN ---------- ---------------------------------------- ---------- 22 6.jpg 279448 23 7.jpg 198189 24 8.jpg 199466 25 9.jpg 211237 已选择26行。
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-05-04 Agumaster点个按钮后台刷新前台一步步出状态
2020-05-04 Html中让输入框input和紧接在后的按钮button在垂直方向上对齐
2020-05-04 Java里一个线程两次调用start()方法会出现什么情况
2018-05-04 【nodejs】理想论坛帖子下载爬虫1.08
2014-05-04 【Canvas与艺术】绘制铜质蓝底五周年(Five Years Anniversary)徽章