Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jdbc之操作BLOB类型字段

jdbc之操作BLOB类型字段

作者头像
一个风轻云淡
发布于 2022-11-15 09:06:05
发布于 2022-11-15 09:06:05
1.7K00
代码可运行
举报
文章被收录于专栏:java学习javajava学习java
运行总次数:0
代码可运行

MySQL BLOB类型

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

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//获取连接

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类型字段 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
 }
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
9. 操作BLOB类型字段
在上一章节,我们使用PreparedStatement实现CRUD操作,那么在CRUD的操作中,对于一些特别的数据库字段操作,会有一些特别的处理。例如:BLOB类型的字段,常用来存储图片的二进制数据。
Devops海洋的渔夫
2022/01/17
2.3K0
9. 操作BLOB类型字段
JDBC完成对数据库数据操作(增,删,改,查)
1.获取数据库的连接 2.预编译sql语句 3.填充占位 4.执行 5.资源的关闭
小尘要自信
2023/10/10
1.8K0
blob类型字段[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/16
3K0
JDBC核心技术
注意:如果是Dynamic Web Project(动态的web项目)话,则是把驱动jar放到WebContent(有的开发工具叫WebRoot)目录中的WEB-INF目录中的lib目录下即可
用户11332765
2024/10/28
1860
JDBC核心技术
JDBC模板(二)
这篇没有采用数据库连接池,如需要数据库连接池,可以参考我上一篇 JDBC 模板 JDBC 项目结构: image.png 整体结构 image.png 代码示例: 配置数据库加载文件 同时在项目工程下
OY
2022/02/21
3010
JDBC模板(二)
一文彻底搞懂贾琏欲执事(JDBC)
    持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。就是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 而在 Java中,数据库存取技术只能通过 JDBC 来访问数据库。
上分如喝水
2021/08/16
6760
一文彻底搞懂贾琏欲执事(JDBC)
jdbc之批量插入
当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处 理。通常情况下比单独提交处理更有效率
一个风轻云淡
2022/11/15
1.1K0
原生Jdbc获取库、表、字段
PrepatedStatement:SQL 语句被预编译并存储在此对象中,可以使用此对象多次高效地执行该语句。
ha_lydms
2023/08/10
4960
原生Jdbc获取库、表、字段
jdbc连接mysql数据库 - Java数据库基础
最近复习了一下Java的基础,包括封装、继承、多态、IO、多线程、反射等等,但我感觉JDBC是个大块,花了半天时间实践总结了一下,顺带记录一波。主要是模板,在以后编程中大概率会用到,尤其是下学期的《数据库编程》课程。
Designer 小郑
2023/08/01
3580
JDBC_2Blob数据类型和批量操作「建议收藏」
Statement不能操作Blob数据类型,以为Blob数据类型是无法使用字符串拼接的,PreparedStatement可以操作Blob数据类型 插入Blob
全栈程序员站长
2022/09/21
5240
原生的JDBC教程详解
JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。 JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 今天我们使用的是mysql的驱动mysql-connecto
Java学习
2018/04/17
3.6K0
原生的JDBC教程详解
10. 批量插入
上一章节,我们使用 PreparedStatement 操作了 BLOB 字段,下面我们再来看看批量插入的操作。
Devops海洋的渔夫
2022/01/17
1.1K0
10. 批量插入
java核心技术第三篇之JDBC第一篇
01.JDBC_两个重要的概念: 1).什么是数据库驱动程序:由数据库厂商提供,面向某种特定的编程语言所开发的一套访问本数据库的类库。 驱动包一般由两种语言组成,前端是:面向某种特定编程语言的语言;后端是:本数据库的语言。 可以方便开发人员使用自己的语言来访问本公司的数据库软件。
海仔
2019/08/05
4050
JDBC数据库的增删改查简单操作
前言 本次带来的是JAVA的JDBC操作,对数据库进行发送SQL语句,以达到对数据库语言的增删改查操作 需要下载驱动类包 MySQL数据库的JDBC驱动包 https://dev.mysql.com
HcodeBlogger
2020/07/14
1.2K0
Java中JDBC的使用详解[通俗易懂]
URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:
全栈程序员站长
2022/09/22
1.5K0
Java中JDBC的使用详解[通俗易懂]
MySQL 中Blob类型数据的插入和读取
​ 我们在操作数据存入blob数据的类型,常用来存储头像图片等流数据,blob类型如果想要存储比较大的流文件的数据,建议选用longBlob的数据类型,Demo中的数据就简单的示范了一下,sql文件如下:
Dream城堡
2019/05/24
9.8K0
【JDBC】入门增删改查
JDBC(Java DataBase Connectivity,    java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。
陶然同学
2023/02/24
3620
【JDBC】入门增删改查
JDBC(二)之JDBC处理CLOB和BLOB及事务与数据库元数据获取
前面大概介绍了JDBC连接数据库的过程,以及怎么操作数据库,今天给大家分享JDBC怎么处理CLOB和BLOB存储图片的事情,以及JDBC怎么去处理事务。怎么在插入数据的时候生成主键返回值 一、JDBC处理CLOB和BLOB数据 1.1、JDBC处理CLOB(在MySQL中是TEXT)   环境:   create table tb_clob_test_1(id int,clob_data text); 前面使用的DButils工具类,用来获取Connection连接和关闭资源。   1)text类型也可以存
用户1195962
2018/01/18
1.6K0
JDBC(二)之JDBC处理CLOB和BLOB及事务与数据库元数据获取
JDBC也就那么回事
  JDBC:Java DataBase Connectivity,是SUN公司提供的一套操作数据库的标准规范(技术)。
泰斗贤若如
2019/06/18
7410
Apache-DBUtils实现CRUD操作
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低, 并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。
一个风轻云淡
2022/11/15
3650
Apache-DBUtils实现CRUD操作
相关推荐
9. 操作BLOB类型字段
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验