package day18;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import day17.DBManager;
public class TestBlob {
public static void main(String[] args) throws Exception {
TestBlob t=new TestBlob();
//t.savePic();
t.readPic();
}
public void readPic() throws Exception{//有问题
DBManager dbManager=null;
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
dbManager=new DBManager();
//获取连接
conn=dbManager.getConnection();
String sql="select * from pic where id=?";
// FileInputStream fis=new FileInputStream(
// new File("D:\\workspace\\WebDatabase\\src\\day18\\Penguins.jpg"));
pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,3);
Blob blob=null;
rs=pstmt.executeQuery();
if(rs.next()){
blob=rs.getBlob(1);
}
//构造文件输出流
FileOutputStream fos=
new FileOutputStream("D:\\workspace\\WebDatabase\\src\\day18\\xxx.png");
//构造缓冲输出流
BufferedOutputStream bos=new BufferedOutputStream(fos);
if(blob!=null){
//获取读取图片的输入流
InputStream ins=blob.getBinaryStream();
BufferedInputStream bis=new BufferedInputStream(ins);
//从输入流中获取数据写入到输出流
int len=0;
byte[] b=new byte[1024];
while((len=bis.read(b))!=-1){
//写入到输出流
bos.write(b,0,len);
}
bos.close();
bis.close();
}
//关闭资源
dbManager.closeResource(conn,pstmt,rs);
}
public void savePic() throws Exception{
DBManager dbManager=null;
Connection conn=null;
PreparedStatement pstmt=null;
dbManager=new DBManager();
//获取连接
conn=dbManager.getConnection();
String sql="insert into pic(id,pic) values(?,?)";
FileInputStream fis=new FileInputStream(
new File("D:\\workspace\\WebDatabase\\src\\day18\\1.png"));
pstmt=(PreparedStatement) conn.prepareStatement(sql);
pstmt.setInt(1,3);
pstmt.setBlob(2, fis);
int k=pstmt.executeUpdate();
System.out.println("k== "+k);
//关闭资源
dbManager.closeResource(conn,pstmt,null);
}
}
DBManager.java 见上一篇。