【java/oracle】往blob字段里写入数据例子
表:
create table tb0504( id number(12), content blob, primary key(id) );
写入代码:
package com.hy.lab.blob; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class BlobWriter { //-- 以下为连接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 tb0504(id,content) values(?,?)"; pstmt = conn.prepareStatement(insertSql); // 方式一:文件转byte数组 InputStream is1=new FileInputStream("c:\\temp1\\2.jpg"); byte[] arr=new byte[is1.available()]; is1.read(arr); Blob blob= conn.createBlob(); blob.setBytes(1,arr); pstmt.setLong(1,1); pstmt.setBlob(2,blob); pstmt.executeUpdate(); // 方式二:文件直接给blob字段 InputStream is2=new FileInputStream("c:\\temp1\\picturesShow1022final_src_210808.rar"); pstmt.setLong(1,2); pstmt.setBlob(2,is2); pstmt.executeUpdate(); // 方式三:设置blob字段的二进制流 InputStream is3=new FileInputStream("c:\\temp1\\media-cool-master.zip"); pstmt.setLong(1,3); pstmt.setBinaryStream(2,is3); pstmt.executeUpdate(); System.out.println("完成写入"); } catch (Exception e) { e.printStackTrace(); } finally { try { pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
查询代码:
SQL> select * from tb0504; ID ---------- CONTENT -------------------------------------------------------------------------------- 1 FFD8FFE000104A46494600010201004800480000FFE112424578696600004D4D002A000000080007 011200030000000100010000011A00050000000100000062011B0005000000010000006A01280003 2 526172211A0700CF907300000D0000000000000030F77460903000190000001900000002643A1CDE A50608531D300B002000000073657474696E672E74787400F0C63A43433A5C68795C7069635C6761 3 ID ---------- CONTENT -------------------------------------------------------------------------------- 504B03040A00000000006EA15B54000000000000000000000000120009006D656469612D636F6F6C 2D6D61737465722F5554050001706A1B62504B03040A00000008006EA15B549572CDAD17020000AD SQL> select id,length(content) from tb0504; ID LENGTH(CONTENT) ---------- --------------- 1 529688 2 400741 3 4651776 SQL>
可见三个文件内容确已写入。
END
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
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)徽章