JDBC详解(四):操作BLOB类型字段(超详解)

news2024/11/29 6:26:34

JDBC详解(四):操作BLOB类型字段

  • 前言
  • 一、MySQL BLOB类型
  • 二、向数据表中插入大数据类型
  • 三、修改数据表中的Blob类型字段
  • 四、从数据表中读取大数据类型



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、MySQL BLOB类型

⭕ MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。

⭕ 插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。

⭕ MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)

在这里插入图片描述

⭕ 实际使用中根据需要存入的数据大小定义不同的BLOB类型。

⭕ 需要注意的是:如果存储的文件过大,数据库的性能会下降。

⭕ 如果在指定了相关的Blob类型以后,还报错:xxx too large,那么在mysql的安装目录下,找my.ini文件加上如下的配置参数: max_allowed_packet=16M。同时注意:修改了my.ini文件之后,需要重新启动mysql服务。

二、向数据表中插入大数据类型

//获取连接
Connection conn = JDBCUtils.getConnection();
		
String sql = "insert into customers(name,email,birth,photo)values(?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);

// 填充占位符
ps.setString(1, "徐海强");
ps.setString(2, "xhq@126.com");
ps.setDate(3, new Date(new java.util.Date().getTime()));
// 操作Blob类型的变量
FileInputStream fis = new FileInputStream("xhq.png");
ps.setBlob(4, fis);
//执行
ps.execute();
		
fis.close();
JDBCUtils.closeResource(conn, ps);

三、修改数据表中的Blob类型字段

Connection conn = JDBCUtils.getConnection();
String sql = "update customers set photo = ? where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);

// 填充占位符
// 操作Blob类型的变量
FileInputStream fis = new FileInputStream("coffee.png");
ps.setBlob(1, fis);
ps.setInt(2, 25);

ps.execute();

fis.close();
JDBCUtils.closeResource(conn, ps);

四、从数据表中读取大数据类型

String sql = "SELECT id, name, email, birth, photo FROM customer WHERE id = ?";
conn = getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, 8);
rs = ps.executeQuery();
if(rs.next()){
	Integer id = rs.getInt(1);
    String name = rs.getString(2);
	String email = rs.getString(3);
    Date birth = rs.getDate(4);
	Customer cust = new Customer(id, name, email, birth);
    System.out.println(cust); 
    //读取Blob类型的字段
	Blob photo = rs.getBlob(5);
	InputStream is = photo.getBinaryStream();
	OutputStream os = new FileOutputStream("c.jpg");
	byte [] buffer = new byte[1024];
	int len = 0;
	while((len = is.read(buffer)) != -1){
		os.write(buffer, 0, len);
	}
    JDBCUtils.closeResource(conn, ps, rs);
		
	if(is != null){
		is.close();
	}
		
	if(os !=  null){
		os.close();
	}
    
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析 倾斜摄影超大场景的三维模型由于数据量庞大,直接进行渲染可能会导致计算资源和时间的浪费。因此,针对倾斜摄影超大场景的三维模型区域进行轻量化处理是一种有效的优化手段。但是,轻…

macOS 13.4Beta 3(22F5049e)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像

镜像特点 完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注…

Python3语法笔记(后篇)

文章目录 前言函数输入参数返回值装饰器(decorator)Lambda表达式(匿名函数)文档和注解 类类和实例特殊方法继承枚举类 错误和异常后记 前言 这篇文章主要用于记录Python3相关语法,方便自己查阅使用。 Python3语法笔记…

rsync之include、exclude使用

rsync之include、exclude使用 注意:exclude可单独使用,include必须和exclude配合使用 环境: 服务端: 在做同步之前必须要知道的含义: --exclude* 排除所有文件,包括目录,因为在linux一切皆…

自动拣货仓库亮灯方案

方案目标概叙: 系统在美团平台下单后,骑手会收到取货码,凭借取货码到指定的智能仓库去取货,仓库标签系统调取相应订单信息,执行亮灯指令(屏幕显示订单信息及拣货数量,并亮灯)&#…

window server dos命令集合

1、 删除任务管理器服务里的服务项,用管理员运行cmd, 再运行:sc delete ServiceName ServiceName从服务属性里查。

爬虫为什么需要ip

爬虫需要使用爬虫ip主要是为了解决以下问题: 1、反爬虫机制:许多网站会设置反爬虫机制来防止爬虫程序的访问,例如限制IP地址的访问频率、检测访问来源等。使用爬虫ip可以绕过这些限制,使得爬虫程序更难被检测到。 2、访问限制&a…

Figma快速转换为Sketch文件格式的方法

由于Sketch允许第三方插件,例如应用程序集成和数据提供,许多设计和开发人员喜欢将Figma文件导入Sketch,并将其转换为Sketch格式。 但是令人头痛的是,Figma只支持Sketch文件的导入,而不支持Sketch文件的导出。这篇文章…

vue项目引入字体样式

1、先下载好需要的字体样式,下载好的应该是个.ttf文件 2、在asset中创建fonts文件夹,将字体样式文件放进去,然后再到里面创建font.css文件 3、font.css文件里面进行引用 font-face {/* 重命名字体名 */font-family: HeFengShuDaoZhaoHe;/*…

无惧黑暗强光,纯视觉导航也能全天候作业

对于一台激光导航扫地机器人而言,全天候作业并非难事,那么纯视觉导航扫地机器人能做到吗? 无论对于人,还是机器人,光线环境的变化对“眼睛”的影响都是致命的。由于视觉传感器对于光线十分敏感,在家庭场景…

TDA4VM/VH 芯片 NAVSS0

请从官网下载 TD4VM 技术参考手册,地址如下: TDA4VM 技术参考手册地址 概述 (NAVSS0 的介绍在 TRM 的第10.2章节) NAVSS0 可以看作 MAIN 域的一个复杂外设域,实现如下功能: UDMASS: DMA 管理子系统;MODSS&#xf…

【GPT】你需要了解的 ChatGPT的技术原理- Transformer架构及NLP技术演进

目录 概述 The Concept of Transformers and Training A Transformers ModelTransformers 的概念和训练 Transformers 模型

2023年第二十届五一数学建模竞赛赛题浅析

我们带来五一赛题的一个c题解析这个的目的,就是为了帮助大家更好的选题,简单的看一下这个几个题目就可以。然后我们题目给出的这个文件夹就是包括三个赛题,还有我们各个赛题的论文规范模板,这三个我们论文写作的时候才会用到。主要…

【某区护网】从外网打点到拿下集团域控

目录 web打点 反弹shell与权限维持 主机信息收集与反向代理 攻击域控 最后 前端时间刚结束了攻防演练活动,其中一项成果为拿下某集团域控制器权限,直接控制域内主机5000多台。以下为攻击过程的粗略记录,整体来说还是比较容易。 web打点…

常见HTTP攻击赏析(3)

基于OpenAPI的APIcat开源日志监控软件已经开发一段时间了,在自己的网站上抓到了一些HTTP的攻击,没事,我们就汇总给大家做个赏析,也当是个提醒。 这是一篇系列文章,数据反馈,看的人还是不少的,感…

Java知识学习13(AQS详解)

1、AQS介绍? AQS 的全称为 AbstractQueuedSynchronizer ,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类,主要用来构建锁和同步器。 public abstract class AbstractQueuedSynchron…

Java学习17(IO模型详解)

1、何为IO? I/O(Input/Outpu) 即输入/输出 。 从计算机结构的角度来解读一下 I/O。 根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。 输入设备(比如键盘&am…

规模增长背后抖音如何构建直播体验优化

随着抖音直播用户持续增加,生态日渐丰富,在经历亿万规模化增长的过程之中,体验优化是必须要面对的问题,如何建立不同阶段的优化体系?如何抓住过程中的优化重点?另外面对业务增长诉求,面对新技术…

计算机网络学习08(TCP三次握手和四次挥手)

1、建立连接—TCP上次握手 建立一个 TCP 连接需要“三次握手”,缺一不可 : 一次握手: 客户端发送带有 SYN(SEQx) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;二…

《PyTorch 深度学习实践》第13讲 循环神经网络(高级篇)

文章目录 1 这一讲任务2 相关解释3 代码 该专栏内容为对该视频的学习记录:【《PyTorch深度学习实践》完结合集】 专栏的全部代码、数据集和课件全放在个人GitHub了,欢迎自取。 1 这一讲任务 根据名字中的字符来预测其是哪个语言地区:如&quo…