MySQL BLOB类型

  • MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。
  • 插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。
  • MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)
类型 大小(单位:字节)
TinyBlob 最大255
Blob 最大65K
MediumBlob 最大16M
LongBlob 最大4G
  • 实际使用中根据需要存入的数据大小定义不同的BLOB类型。
  • 需要注意的是:如果存储的文件过大,数据库的性能会下降。
  • 如果在指定了相关的Blob类型以后,还报错:xxx too large,那么在mysql的安装目录下,找my.ini文件加上如下的配置参数: max_allowed_packet=16M。同时注意:修改了my.ini文件之后,需要重新启动mysql服务。

向数据表中插入Blob类型

//获取连接
Connection conn = JDBCUtils.getConnection();String sqlstr = "insert into user_info(name,email,photo)values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sqlstr);// 填充占位符
ps.setString(1, "kangkang");
ps.setString(2, "kangkang@126.com");
// 操作Blob类型的变量
FileInputStream fis = new FileInputStream("kangkang.png");
ps.setBlob(3, fis);
//执行
ps.execute();fis.close();
JDBCUtils.closeResource(conn, ps);

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

Connection conn = JDBCUtils.getConnection();
String sqlstr = "update user_info set photo = ? where id = ?";
PreparedStatement ps = conn.prepareStatement(sqlstr);// 填充占位符
// 操作Blob类型的变量
FileInputStream fis = new FileInputStream("kk.png");
ps.setBlob(1, fis);
ps.setInt(2, 25);ps.execute();fis.close();
JDBCUtils.closeResource(conn, ps);

从数据表中读取Blob数据类型

String sqlstr = "SELECT id, name, email, photo FROM user_info WHERE id = ?";
conn = getConnection();
ps = conn.prepareStatement(sqlstr);
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);UserInfo user_info = new UserInfo(id, name, email);System.out.println(user_info); //读取Blob类型的字段Blob photo = rs.getBlob(4);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();}
}

05-操作Blob类型字段相关推荐

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

    JDBC详解(四):操作BLOB类型字段 前言 一.MySQL BLOB类型 二.向数据表中插入大数据类型 三.修改数据表中的Blob类型字段 四.从数据表中读取大数据类型 前言 本博主将用CSDN记 ...

  2. JDBC四:操作Blob类型字段

    操作Blob类型字段 向数据表中插入Blob类型的字段 Blobl类型的字段是一个文件,文件的传输需要进行IO流操作 @Testpublic void testBlob() {Connection c ...

  3. JDBC:软件架构、概述、数据库连接:普通项目添加jar包,URL、sql注入,类型转换,查询流程表、操作BLOB类型字段、批量插入,替换jar包、事务/数据库连接池

    0 常识说明 0.1 软件架构方式介绍 B/S架构:浏览器 与 服务器之间的交互. C/S架构:安装的本地软件(如:今日头条等) 与 服务器进行交互. 0.2 JavaWeb技术概览 JDBC核心技术 ...

  4. JDBC学习总结(二)JDBC操作Blob类型字段高效的批量插入JDBC处理数据库事务将多个SQL看成一个事务执行数据库连接池C3P0DBCPDruidDBUtils工具类实现CRUD

    JDBC学习总结(二)JDBC操作Blob类型字段/高效的批量插入/JDBC处理数据库事务/将多个SQL看成一个事务执行/数据库连接池C3P0/DBCP/Druid/DBUtils工具类实现CRUD ...

  5. 第25章 JDBC核心技术第4节:操作BLOB类型字段

    4.1 MySQL BLOB类型 MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据. 插入BLOB类型的数据必须使用PreparedStatement, ...

  6. jdbc之操作BLOB类型字段

    MySQL BLOB类型 MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据. 插入BLOB类型的数据必须使用PreparedStatement,因为BL ...

  7. mybatis更新Blob类型字段要用updateByPrimaryKeyWithBLOBs

    转载自  mybatis更新Blob类型字段要用updateByPrimaryKeyWithBLOBs 不会报错也不会更新desc  业务desc数据库类型为Blob  查看源码 解决方案:

  8. mysql 有empty_blob()_【原创】操作Blob类型的方法

    注:下列过程中的参数p_filename为外部文件名称,p_name用于标识唯一的一行 1.创建目录utl_dir用于文件的导入.导出 create or replace directory utl_ ...

  9. PgSql之操作JSON类型字段

    假设这里有check_result的表,我们需要从里面查询检查报告json字段checkresult 这样是可以查询到数据的 SELECT ID,checkresult :: json -> ' ...

最新文章

  1. π型滤波频率计算_滤波电路的总结
  2. 如何提取fasta文件的部分信息
  3. C# string.Format谨慎使用
  4. 安装python的pip模块
  5. 论文学习——《Affective Computing:A Review》
  6. 列举5种常见的计算机硬件主要有哪些,计算机硬件组成有哪些
  7. Windows 使用命令行修改密码
  8. 用微信扫一扫功能扫描二维码下载安装APK不能用,不能打开APK下载链接的解决方案
  9. CRAFTS:端对端的场景文本检测器
  10. HTML+CSS实现炫酷的登录界面
  11. 运维:Jenkins报Suppressed: java.nio.file.FileSystemException
  12. 一战赚了1090亿,“恐怖”的张一鸣!
  13. MATLAB app 实现音乐播放器
  14. 计算机专业武汉的就业方向,计算机专业好就业吗
  15. android socket 推送服务版本
  16. python爬虫爬取豆瓣top排行图片
  17. 【Network】网络基础扫盲
  18. sparksql hive mysql_SparkSql 整合 Hive
  19. Echarts.js 主标题与副标题在同一行,主标题前后加图片,icon,标题的文字样式不一样,大小,颜色不一样
  20. 淘宝找不到撤销退款申请_如何处理“纠纷退款率”,这些知识点你必须知道

热门文章

  1. 拉格朗日乘数法——摘自高数下册P115
  2. 第三方平台一键发布视频至抖音:基于.NET CORE
  3. JavaSE核心技术——流程控制语言练习题
  4. swift-调用高德sdk填充行政区域,并实现区分填充区域内外点击动作
  5. matlab手机版论坛,首页 - MATLAB中文论坛
  6. php ziparc 扩展_请问扩展名为.php.cfg.pdf.rar的文件分别是什么文件用什么软件能够打开...
  7. 使用tcpcopy导入线上流量进行功能和压力测试
  8. PTTools 安全性如何? VirScan 49款杀软强力测试
  9. Java反射+自定义注解实现配置文件数组加载(实现@ConfigurationProperties(xxx))
  10. minify php,ThinkSNS public/minify.php 任意文件包含漏洞