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

【JDBC】题目:向数据表中插入Blob类型数据

前言:

PreparedStatement除了解决Statement的拼串、sql注入问题之外,还可以实现以下操作

  1. PreparedStatement操作Blob的数据,而Statement做不到。
  2. PreparedStatement可以实现更高效的批量操作。

场景:

在下图customer表中,photo字段为mediumblob类型

image-20221019225319584

场景知识拓展:

BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。

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

1555581069798

实现如下:

public class BlobTest {
   // 向数据表customers中插入Blob类型的字段
   @Test
   public void testInsert() throws Exception {
      // 获取数据库连接(利用封装好的工具类)
      Connection conn = JDBCUtils.getConnection();
      // 预编译sql语句
      String sql = "insert into customers(name, email, birth, photo) values (?, ?, ?, ?)";
      PreparedStatement ps= conn.prepareStatement(sql);
      // 填充占位符
      ps.setObject(1, "小帅");
      ps.setObject(2, "juruo@qq.com");
      ps.setObject(3, "2001-07-12");
      // Blob 太大,通过inputStream 流以文件的方式传输
      // 图片放置在当前工程下
      FileInputStream is = new FileInputStream(new File("C:\\Users\\19048\\Pictures\\juruo.png"));
      ps.setBlob(4, is);
      // 执行
      ps.execute();
      // 关闭资源
      JDBCUtils.closeResource(conn, ps);
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼波纹疾走

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值