java如何向mysql写入blob数据?

发布于 2022-09-02 20:40:29 字数 2828 浏览 9 评论 0

表结构如下
图片描述

package entity;

import java.io.Serializable;

public class Person implements Serializable{
    private int id;
    private String name;
    private String sex;
    private int age;
    private Person soulMate;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    public Person getSoulMate() {
        return soulMate;
    }
    public void setSoulMate(Person soulMate) {
        this.soulMate = soulMate;
    }
    @Override
    public String toString() {
        return "Person[" + "id=" + id + "  ,name=" + name + "  ,sex=" + sex + "  ,age=" + age + "]";
    }
}

上面的是实现了序列化的一个对象,我要将其写入到数据库中去。

具体的操作代码如下:


    import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import entity.Person;
import util.DBUtil;

public class Main {

    public static void main(String[] args) {
        Person boy = new Person();
        boy.setId(10);
        boy.setName("litten");
        boy.setAge(22);
        boy.setSex("男");
        Person girl = new Person();
        girl.setId(11);
        girl.setName("litten's soul mate");
        girl.setAge(21);
        girl.setSex("女");
        
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos;
        try {
            oos = new ObjectOutputStream(baos);
            oos.writeObject(boy);
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            
            Connection conn = DBUtil.getConn();
            PreparedStatement ps = conn.prepareStatement("insert into testBlob (id, blob) values(?,?)");
            ps.setInt(1, 2);
            ps.setBlob(2, bais, bais.available());
            System.out.println(ps.executeUpdate());
        } catch (IOException | ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        

    }

}

但是却报错了? 不知道是为什么?求教。
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文