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);
}
}
}
存储和读取一个MP3文件于MySQL中
最新推荐文章于 2024-07-14 03:52:19 发布