【JDBC笔记】向数据表中插入Blob类型数据

本文使用的数据表如下,我们想在其中添加图片(Blob)类型的数据

目录

MySQL BLOB类型

插入Blob类型数据代码实现


MySQL BLOB类型

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

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

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

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

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

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

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

插入Blob类型数据代码实现

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.DriverManager;
import java.util.Properties;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class BlobTest {
	public static void main(String[] args) throws Exception {
		//1.读取文件中的信息
		InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
		//将用户名和密码封装在Properties中
		Properties pros = new Properties();
		pros.load(is);
		String user = pros.getProperty("user");
		String password = pros.getProperty("password");
		String url = pros.getProperty("url");
		String driverClass = pros.getProperty("driverClass");
		//2.加载驱动
		Class.forName(driverClass);
		//3.获取连接
		Connection conn = (Connection) DriverManager.getConnection(url, user, password);
		
		String sql = "insert into customers(name,email,birth,photo)values(?,?,?,?)";
		PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
		ps.setObject(1, "远坂凛");
		ps.setObject(2, "ybl@qq.com");
		ps.setObject(3, "2000-01-01");
		
		FileInputStream is1 = new FileInputStream(new File("ybl1.png"));
		ps.setBlob(4, is1);
		ps.execute();
		conn.close();
		ps.close();		
	}
}

执行代码,插入成功

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java小白。。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值