欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JDBC如何插入Blob类型字段

程序员文章站 2022-06-22 17:19:06
Blob类型字段Blob:在MySQL中 Blob是一个二进制大型对象,可以是存储大量数据的容器,他能容纳不同大小的数据,插入Blob类型的数据必须使用PrepareStatement 因为Blob类型的数据无法使用字符串拼接。四种Blob类型:注意:再插入时出现插入的数据太大,则需要去my.ini文件中修改配置文件: max_allowed_packet=16M。直接在会后面添加,然后重启mysql服务。向数据表中插入大数据类型的图片......

Blob类型字段

Blob:在MySQL中 Blob是一个二进制大型对象,可以是存储大量数据的容器,他能容纳不同大小的数据,插入Blob类型的数据必须使用PrepareStatement 因为Blob类型的数据无法使用字符串拼接。
四种Blob类型:
JDBC如何插入Blob类型字段

注意:再插入时出现插入的数据太大,则需要去my.ini文件中修改配置文件: max_allowed_packet=16M。直接在会后面添加,然后重启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, "812@qq.com");
ps.setDate(3, new Date(123124141L));
// 读取图片
  InputStream is = new FileInputStream(new File("zyy.jpg"));
  // 将图片插入到数据表
  ps.setBlob(4, is);
  ps.execute();

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

// 获取连接
  Connection conn = JDBCUtils.getConnection();
  String sql = "UPDATE customers SET photo = ? WHERE id=?";
  PreparedStatement ps = conn.prepareStatement(sql);
  InputStream is = new FileInputStream(new File("1.png"));
  // 将图片插入到数据表,替换原来的数据
  ps.setBlob(1, is);
  ps.setInt(2, 21);
  ps.execute();
  JDBCUtils.closeRsource(conn, ps);

查询数据表中Blob类型的数据

Connection conn = JDBCUtils.getConnection();
String sql = "SELECT photo FROM customers WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
  // 填充占位符
  ps.setInt(1, 24);
  // 获取结果集
  ResultSet rs = ps.executeQuery();
  if (rs.next()) {
   // 获得Blob类型数据
   Blob photo = rs.getBlob(1);
   // 读取Blob数据
   InputStream bs = photo.getBinaryStream();
   OutputStream os = new FileOutputStream("gz.jpg");
   byte[] bys = new byte[1024];
   int len;
   // 将Blob数据读出来
   while ((len = bs.read(bys)) != -1) {
    os.write(bys, 0, len);
   }
  }
  JDBCUtils.closeRsource(conn, ps);
   

本文地址:https://blog.csdn.net/weixin_48479053/article/details/107658116

相关标签: JDBC