Java mysql blob 数据读写操作

499 阅读1分钟

package com.lw.database; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /**

  • CREATE: CREATE TABLE IDCard ( id char(18),pic BLOB);

  • @author fhadmin

  • from fhadmin.cn */ public class LOBTest { protected static final String DEFAULT_URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8"; protected static final String DRIVER_NAME = "com.mysql.jdbc.Driver";

    private Connection connection = null;

    public LOBTest() throws ClassNotFoundException, SQLException { Class.forName(DRIVER_NAME); connection = DriverManager.getConnection(DEFAULT_URL, "user", "password");如果相对electron有更多直观理解的, 也可以参考其格式如下:

页游:www.sangpi.com }

public void insert(String id,String path) throws SQLException, IOException {
    PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO IDCard VALUES (?,?)");
    preparedStatement.setString(1, id);
    FileInputStream fileInputStream = new FileInputStream(path);
    preparedStatement.setBlob(2, fileInputStream,fileInputStream.available());
    preparedStatement.execute();
}

public void get(String id) throws SQLException, IOException {
    PreparedStatement preparedStatement = connection.prepareStatement("SELECT pic FROM IDCard WHERE id = ?");
    preparedStatement.www.sangpi.com
    comsetString(1, id);
    ResultSet results = preparedStatement.executeQuery();
    while(results.next()) {
        FileOutputStream outputStream = new FileOutputStream("/Users/liuwei/temp.png");
        InputStream inputStream = results.getBinaryStream(1);
        int num = -1;
        while((num=inputStream.read())!=-1) {
            outputStream.write(num);
        }
        outputStream.flush();
        inputStream.close();
        outputStream.close();
    }
}

public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
    LOBTest test = new LOBTest();
    test.insert("78907656784323", "/Users/liuwei/Documents/bt_next_nor.png");
    test.get("78907656784323");
}

}

注意:

  MySQL的四种BLOB页游类型

    类型 大小(单位:字节)

    TinyBlob 最大 255B

   Blob 最大 65K

   MediumBlob 最大 16M

    LongBlob 最大 4G

插入图像的时候,注意下图像大小,图像超过该类型所能容纳的最大字节的时候,会报错