首页 > java如何向mysql写入blob数据?

java如何向mysql写入blob数据?

表结构如下

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();
        }
        
        

    }

}

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

【热门文章】
【热门文章】