随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

首先准备两首mp3歌曲:

 

 然后进行代码测试:

package jdbcDemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.rowset.serial.SerialBlob;

import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;

import JDBC.JdbcUtils;

public class demo1 {
    @Test
    public void toSave() {
        try {
            // 得到数据库连接对象
            Connection conn = JdbcUtils.getConnection();
            // SQL模板
            String sql = "INSERT INTO tab_bin VALUES(?,?,?)";
            // 绑定模板
            PreparedStatement pstmt = conn.prepareStatement(sql);

            // 设置参数
            pstmt.setInt(1, 2);
            pstmt.setString(2, "黄昏 - 小阿七.mp3");
            // 把文件转换为字节数组
            byte[] byt = IOUtils.toByteArray(new FileInputStream("E:\\Program File\\LXMusic\\DownLoad\\黄昏 - 小阿七.mp3"));
            // 使用字节数组和Blob实现子类创建Blob对象
            Blob blob = new SerialBlob(byt);
            pstmt.setBlob(3, blob);

            // 执行
            pstmt.executeUpdate();
        } catch (SQLException | IOException e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void getData() throws Exception {
        try {
            // 得到数据库连接对象
            Connection conn = JdbcUtils.getConnection();
            
            // SQL模板
            String sql = "SELECT * FROM tab_bin";
            // 绑定模板
            PreparedStatement pstmt = conn.prepareStatement(sql);
            
            // 执行并得到ResultSet对象
            ResultSet rs = pstmt.executeQuery();
            if(rs.next()) {    // 将光标移动到第一行
                rs.next();    // 存放第二首
                Blob blob = rs.getBlob("data");
                OutputStream out = new FileOutputStream("D:" + File.separator + "hh.mp3");
                InputStream input = blob.getBinaryStream();
                IOUtils.copy(input, out);
                out.close();
                input.close();
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 先将存入SQL:

 

 然后从SQL取出存入硬盘:

 

 

 如果存入SQL的过程中报错packet。。。是因为没有设置MySQL的最大允许传输信息包的值,参考: 

https://www.cnblogs.com/0099-ymsml/p/16224380.html
posted on 2022-05-05 13:37  时间完全不够用啊  阅读(60)  评论(0编辑  收藏  举报