数据库:
字段类型需要是blob类型
代码:存入数据库
package com.test1;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BlobTest {
public static void main(String[] args) throws IOException {
Create();
}
private static void Create() throws IOException {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//加载驱动建立连接
conn = jdbcUtils.getConnection();
//预处理语句
String sql = "insert into blob_test(pic) values (?)";
ps = conn.prepareStatement(sql);
File file = new File("sh.jpg");
//通过字节流存取数据如图片压缩包视频等
InputStream in = new BufferedInputStream(new FileInputStream(file));
ps.setBinaryStream(1, in,(int)file.length());
//执行
int i = ps.executeUpdate();
in.close();
System.out.println("i = "+ i);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.free(rs, ps, conn);
}
}
}
存入到数据库后数据库是看不出来的:
从数据库读取文件:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BlobTest {
public static void main(String[] args) throws IOException {
//Create();
Read(1);
}
private static void Read(int id) throws IOException {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//加载驱动建立连接
conn = jdbcUtils.getConnection();
//预处理语句
//String sql = "insert into tst_test(big_txt) values (?)";
String sql = "select pic from blob_test where id =?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
//执行
rs = ps.executeQuery();
while (rs.next()) {
InputStream in= rs.getBinaryStream("pic");
//获取数据存入文本
File file = new File("a.jpg");
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
byte[] bys = new byte[1024];
for (int i=0;(i=in.read(bys))>0;){
out.write(bys, 0, i);
}
out.close();
in.close();
}
//System.out.println(rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
jdbcUtils.free(rs, ps, conn);
}
}
}