SavePicture.java :
public class SavePicture {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement pstmt=null;
String sql="insert into student(id,name,photo) values(?,?,?)";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.
getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,1);
pstmt.setString(2,"tom");
//以下为重点部分
File f=new File("src\\coder.jpg");
FileInputStream fis=new FileInputStream(f);
pstmt.setBinaryStream(3,fis,(int)f.length());
int n=pstmt.executeUpdate();
System.out.println(n+"条记录被插入");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
//关闭资源
}
}
}
GetPicture.java :
public class GetPicture {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select id,name,photo from student where id=?";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.
getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,1);
rs=pstmt.executeQuery();
if(rs.next()){
//重点开始
InputStream is=rs.getBinaryStream("photo");
FileOutputStream fos=new FileOutputStream(new File("abc.jpg"));
byte[] buffer=new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
fos.close();
is.close();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭资源
}
}
}
运行程序,刷新工程,得到:
可以看到abc.jpg和coder.jpg是相同的图片。