• 【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类型数据代码实现

    1. import java.io.File;
    2. import java.io.FileInputStream;
    3. import java.io.InputStream;
    4. import java.sql.DriverManager;
    5. import java.util.Properties;
    6. import com.mysql.jdbc.Connection;
    7. import com.mysql.jdbc.PreparedStatement;
    8. public class BlobTest {
    9. public static void main(String[] args) throws Exception {
    10. //1.读取文件中的信息
    11. InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
    12. //将用户名和密码封装在Properties中
    13. Properties pros = new Properties();
    14. pros.load(is);
    15. String user = pros.getProperty("user");
    16. String password = pros.getProperty("password");
    17. String url = pros.getProperty("url");
    18. String driverClass = pros.getProperty("driverClass");
    19. //2.加载驱动
    20. Class.forName(driverClass);
    21. //3.获取连接
    22. Connection conn = (Connection) DriverManager.getConnection(url, user, password);
    23. String sql = "insert into customers(name,email,birth,photo)values(?,?,?,?)";
    24. PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
    25. ps.setObject(1, "远坂凛");
    26. ps.setObject(2, "ybl@qq.com");
    27. ps.setObject(3, "2000-01-01");
    28. FileInputStream is1 = new FileInputStream(new File("ybl1.png"));
    29. ps.setBlob(4, is1);
    30. ps.execute();
    31. conn.close();
    32. ps.close();
    33. }
    34. }

    执行代码,插入成功

  • 相关阅读:
    虚拟机复制后,无法ping通问题解决
    XML配置文件
    【操作系统】之gcc编译
    安装mayavi
    VS2022+QT5.14.2开发VS QT Tool的使用
    【fread/fwrite】C语言API之fread/fwrite函数详解
    HTTP 协议
    3.3 AOP之AOP概念及相关术语
    关于windows的文件监控管理系统(Java)
    Redis bigkey管理
  • 原文地址:https://blog.csdn.net/lijibai_/article/details/125470161