packagecom.aff.PreparedStatement;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Blob;importjava.sql.Connection;importjava.sql.Date;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importorg.junit.Test;importcom.aff.bean.Customer;importcom.aff.utils.JDBCUtils;//向数据表Customers插入Blob类型的字段
public classBlobTest {//向数据表customers插入Blob类型的字段
@Testpublic void testInsert() throwsException {
Connection conn=JDBCUtils.getConnection();
String sql= " insert into customers(name,email,birth,photo)values(?,?,?,?)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setObject(1, "何苗苗");
ps.setObject(2, "hemiao@163.com");
ps.setObject(3, "1996-2-3");
FileInputStream is= new FileInputStream(new File("1.jpg"));
ps.setObject(4, is);
ps.execute();
JDBCUtils.closeResource(conn, ps);
}//查询数据表customers中的Blob类型字段
@Testpublic voidtestQuery() {
Connection conn= null;
PreparedStatement ps= null;
InputStream is= null;
FileOutputStream fos= null;
ResultSet rs= null;try{
conn=JDBCUtils.getConnection();
String sql= "select id,name,email,birth,photo from customers where id = ?";
ps=conn.prepareStatement(sql);
ps.setInt(1, 20);
rs=ps.executeQuery();if(rs.next()) {//方式一//int id = rs.getInt(1);//String name = rs.getString(2);//String email = rs.getString(3);//Date birth = rs.getDate(4);//方式二
int id = rs.getInt("id");
String name= rs.getString("name");
String email= rs.getString("email");
Date birth= rs.getDate("birth");
Customer cust= newCustomer(id, name, email, birth);
System.out.println(cust);//将Blob的字段下载下来,以文件的方式保存到本地
Blob photo = rs.getBlob("photo");
is=photo.getBinaryStream();
fos= new FileOutputStream(new File("mm.jpg"));byte[] buffer = new byte[1024];intlen;while ((len = is.read(buffer)) != -1) {
fos.write(buffer,0, len);
}
}
}catch(Exception e) {
e.printStackTrace();
}finally{try{if(is != null)
is.close();
}catch(IOException e) {
e.printStackTrace();
}try{if(fos !=null)
fos.close();
}catch(IOException e) {
e.printStackTrace();
}
JDBCUtils.closeResource(conn, ps, rs);
}
}
}