MySQL Blob类型

MySQL Blob类型MySQL 中 Blob 是一个二进制大型对象 是一个可以存储大量数据的容器 它能容纳不同大小的数据 插入 Blob 类型的数据必须使用 PreparedStat 因为 Blob 类型的数据无法使用字符串拼接写的 MySQL 的四种 Blob 类型 除了在存储的最大信息量上不同外 他们是等同的 类型 大小 单位 字节 TinyBlod 最大 255 Blod 最大 65K MediumBlob 最大 16M LongBlob 最大 4G 实际使用中根据需要存入

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

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

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

类型 大小(单位:字节)
TinyBlod 最大255
Blod 最大65K
MediumBlob 最大16M
LongBlob 最大4G

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

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

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

使用方法:

import util.JdbcUtil; import java.io.*; import java.sql.*; / * @author wwkjk * @date 2021-10-20 13:31:44 * @Description 测试Blob添加和读取 / public class StudentDao { / * @param * @return void * @author wwkjk * @date 2021-10-20 14:07:16 * @Description 存放Blob类型图片 / public void TestBlobAdd() throws FileNotFoundException { String sql = "insert into student(student_id, student_name, student_age, student_photo) values (?, ?, ?, ?)"; FileInputStream fis = new FileInputStream(new File("K.jpg")); JdbcDao.update(sql, 0, "wwk3", 18, fis); } / * @param * @return void * @author wwkjk * @date 2021-10-20 14:07:40 * @Description 从数据库下载Blob类型的图片 / public void TestBlobDownload() { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; InputStream is = null; FileOutputStream fos = null; try { con = JdbcUtil.getConnection(); String sql = "select student_photo from student where student_id = ?"; ps = con.prepareStatement(sql); ps.setInt(1, 2); rs = ps.executeQuery(); if (rs.next()) { //将Blob类型的字段以文件的形式下载到本地 Blob photo = rs.getBlob("student_photo"); is = photo.getBinaryStream(); fos = new FileOutputStream("test.jpg"); byte[] buffer = new byte[1024]; int len; while ((len = is.read(buffer)) != -1) { fos.write(buffer, 0, len); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } JdbcUtil.closeResource(con, ps, rs); } } }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220421.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:31
下一篇 2026年3月17日 下午8:31


相关推荐

  • JavaScript下载本地文件

    JavaScript下载本地文件网上很多关于JS下载文件操作的代码,都过于繁杂,偶然找到这个方法,务必记录一下,太简单实用了/Template/MaterielDictionary.xlsx为文件相对路径,后边参数可不动。window.open(‘/Template/MaterielDictionary.xlsx’,’newwindow’,’height=100,width=400,top=0

    2022年6月10日
    174
  • 什么是AOP对AOP的面试题

    什么是AOP对AOP的面试题我是属于那种你让我写代码我能写出来 而且底层原理大概我也都知道的那种 但是你要我说各种概念我就不行了 而且我只喜欢代码 但是奈何面试的时候不可能让你你这做吧 所以为了应付面试只能做做总结了 索性就写博客来巩固了 来吧 什么是 AOP 首先告诉面试官 aop 就是面向切面编程 那什么是面向切面编程呢 就是指在运行期动态的将代码切入到制定类的指定位置这种思想就是面向切面编程 举个例子 如果我们要在执行哪

    2026年3月18日
    3
  • PermitRootLogin yes无效问题

    PermitRootLogin yes无效问题奶奶的,搞了半下午终于找到原因。/etc/ssh/sshd_config明明设置了PermitRootLogin为yes,可就是用putty连,root登录不了,每次都accessdenied。气死我也。同一个集群的另外10几台机器每个都是好的,唯独这一台出问题。到处查资料,翻文章,甚至直接把其他机器的sshd_config拷贝过来还是不行。最后突然想起来,会不会是root尝…

    2022年6月11日
    195
  • pycharm 激活码 2021_最新在线免费激活

    (pycharm 激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html83PVI25FMO-eyJsaWNlbnNlSW…

    2022年3月27日
    44
  • HLS-指令使用指南

    HLS-指令使用指南写在前面本文记录了 HLS 的所使用的大部分指令 参考 UG1270 对每个指令进行讲解 并有相关示例 内核优化 pragmaHLSall 说明指定实例限制以限制已实现内核中的资源分配 这定义并可以限制用于实现特定功能 循环 操作或内核的 RTL 实例和硬件资源的数量 ALLOCATIONpr 在函数体 循环或代码区域内指定 例如 如果 C 源代码有四个函数 foo sub 的实例 则 ALLOCATIONpr 可以确保最终 RTL 中只有一个 foo sub 实

    2026年3月18日
    1
  • ettercap 图形界面遇无线网卡报错[通俗易懂]

    ettercap 图形界面遇无线网卡报错[通俗易懂]ettercap0.8.2copyright2001-2015EttercapDevelopmentTeamERROR:9,错误的文件描述符[/build/ettercap-W54WVV/ettercap-0.8.2/src/ec_network.c:source_init:245]libnet_init:unknownphysicallayertype0…

    2022年6月28日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号