Javaweb 向Mysql数据库存取二进制文件
来源:互联网 发布:java泛型方法 编辑:程序博客网 时间:2024/06/04 20:59
package cn.itcast.demo4;
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.Test;
import cn.itcast.demo3.JdbcUtils;
/**
* 大数据
* @author cxf
*
*/
public class Demo4 {
/**
* 把mp3保存到数据库中。
* @throws SQLException
* @throws IOException
* @throws FileNotFoundException
*/
@Test
public void fun1() throws Exception {
/*
* 1. 得到Connection
* 2. 给出sql模板,创建pstmt
* 3. 设置sql模板中的参数
* 4. 调用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("F:/流光飞舞.mp3"));
// 使用byte[]创建Blob
Blob blob = new SerialBlob(bytes);
// 设置参数
pstmt.setBlob(3, blob);
pstmt.executeUpdate();
}
/**
* 从数据库读取mp3
* @throws SQLException
*/
@Test
public void fun2() throws Exception {
/*
* 1. 创建Connection
*/
Connection con = JdbcUtils.getConnection();
/*
* 2. 给出select语句模板,创建pstmt
*/
String sql = "select * from tab_bin";
PreparedStatement pstmt = con.prepareStatement(sql);
/*
* 3. pstmt执行查询,得到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("c:/lgfw.mp3");
IOUtils.copy(in, out);
}
}
}
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.Test;
import cn.itcast.demo3.JdbcUtils;
/**
* 大数据
* @author cxf
*
*/
public class Demo4 {
/**
* 把mp3保存到数据库中。
* @throws SQLException
* @throws IOException
* @throws FileNotFoundException
*/
@Test
public void fun1() throws Exception {
/*
* 1. 得到Connection
* 2. 给出sql模板,创建pstmt
* 3. 设置sql模板中的参数
* 4. 调用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("F:/流光飞舞.mp3"));
// 使用byte[]创建Blob
Blob blob = new SerialBlob(bytes);
// 设置参数
pstmt.setBlob(3, blob);
pstmt.executeUpdate();
}
/**
* 从数据库读取mp3
* @throws SQLException
*/
@Test
public void fun2() throws Exception {
/*
* 1. 创建Connection
*/
Connection con = JdbcUtils.getConnection();
/*
* 2. 给出select语句模板,创建pstmt
*/
String sql = "select * from tab_bin";
PreparedStatement pstmt = con.prepareStatement(sql);
/*
* 3. pstmt执行查询,得到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("c:/lgfw.mp3");
IOUtils.copy(in, out);
}
}
}
数据库表结构
CREATE TABLE tab_bin(
id INT PRIMARYKEY AUTO_INCREMENT,
filename VARCHAR(100),
data MEDIUMBLOB
);阅读全文
0 0
- Javaweb 向Mysql数据库存取二进制文件
- 使用Hibernate向MySQL数据库中存取文件
- MySQL如何存储图片?---一个向数据库存取image文件的jsp程序
- MySQL如何存储图片?---一个向数据库存取image文件的jsp程序
- **MYSQL中如何存取二进制文件&PHP主机的支持说明。
- 向sql数据库中存取照片
- 向数据库中存取图片(BITMAP)
- SSH框架中向数据库存取图片
- 向数据库中存取图片(BITMAP)
- MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
- 从数据库(mysql)存取图片
- 从数据库(mysql)存取图片
- 从数据库(mysql)存取图片
- 从数据库(mysql)存取图片
- ADO存取二进制文件
- JDBC存取二进制文件示例
- JavaWeb连接数据库MySQL
- 二进制文件保存到mysql数据库详解
- Unity3D-Android直接使用系统自带邮件发送反馈
- 快速定位死循环位置
- ionic3小知识(持续更新...)
- SSM整合配置文件(Springmvc+Spring+Mybatis)
- tomcat安全增强
- Javaweb 向Mysql数据库存取二进制文件
- Android设计模式之工厂模式
- 莫比乌斯算法浅析
- 解决树莓派登录的问题
- 传递集合数据
- BufferedWrite和BufferedRead的用法。
- JSON.parse()和JSON.stringify()
- spring事务总结
- Python中的循环以及break/continue/else/pass