存储和读取一个MP3文件于MySQL中

package cn.jxk.demo4;

import java.io.FileInputStream;
import java.io.FileOutputStream;
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 javax.sql.rowset.serial.SerialBlob;

import org.apache.commons.io.IOUtils;
import org.junit.Test;
import cn.jxk.demo3.JdbcUtils;

/*
 * 大数据
 * */
public class Demo4 {
    /*
     * 把MP3保存到数据库中
     * */
    @Test
    public void fun1() throws Exception{
        /*
         * 一、得到Connection
         * 二、给出sql模板,创建pstmt
         * 三、设置sql模板中的参数
         * 四、调用pstmt的executeUpdate()执行
         * */
            Connection con=JdbcUtils.getConnection();
            String sql="insert into tab_bin values(?,?,?)";
            PreparedStatement pstmt=con.prepareStatement(sql);
            pstmt.setInt(1,1);
            pstmt.setString(2, "薛之谦 - 刚刚好.mp3");
        /*
         * 得到Blob
         * 1.我们有的是文件,目标是Blob
         * 2.先把文件变成byte[]
         * 3.再使用byte[]创建Blob
         * */
            //把文件转换成byte[]
            byte[] bytes=IOUtils.toByteArray(new FileInputStream("D:/jxk/薛之谦 - 刚刚好.mp3"));
            //使用字节数组类型byte[]创建 Blob
            Blob blob=new SerialBlob(bytes);
            pstmt.setBlob(3, blob);

            pstmt.executeUpdate();
    }
    /*
     * 从数据路中读取MP3
     * */
    @Test
    public void fun2() throws Exception{
        /*
         * 1.创建Connection
         * */
        Connection con=JdbcUtils.getConnection();
        /*
         * 2.给出sql模板,创建pstmt
         * */
        String sql="select * from tab_bin";
        PreparedStatement pstmt=con.prepareStatement(sql);
        /*
         * 3.pstmp执行查询,得到ResultSet
         * */
        ResultSet rs=pstmt.executeQuery();
        /*
         * 4.获取rs列中名为data的数据
         * */
        if(rs.next()){
            Blob blob=rs.getBlob("data");
            /*
             * 把Blob变为磁盘上的文件
             * */
            /*
             * 1.通过Blob得到输入流对象
             * 2.自己创建输出流对象
             * 3.把输入流对象写入到输出流中
             * */
            InputStream in =blob.getBinaryStream();
            OutputStream out=new FileOutputStream("D:/蒋晓凯/刚刚好.mp3");
            IOUtils.copy(in, out);
           }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值