• 【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. }

    执行代码,插入成功

  • 相关阅读:
    FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(三)
    75. 颜色分类(中等 数组 双指针 排序)
    Python编程陷阱(七)
    汇编基础知识
    ios系统在h5页面下拉上拉会带动整个webview 出现空白
    2、k8s 集群安装
    C#学习记录——GDI+绘图基础
    保姆教程angular8(一)
    jquery 跳转到当前页面指定位置
    《一周搞定模电》—55定时器
  • 原文地址:https://blog.csdn.net/lijibai_/article/details/125470161