《--------保存图片到数据库--------------》
public void savePic(InputStream is){
String insertsql = "insert into pic(id,pic) values(1,empty_blob())";
Connection conn = null;
Statement stmt = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = ds.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
int rt = stmt.executeUpdate(insertsql);
if(rt > 0){
System.out.println("initialization succeed!!");
String preCursor = "select id,pic from pic where id='1' for update";
rs = stmt.executeQuery(preCursor);
rs.next();
Blob b = (Blob)rs.getBlob("pic");
BufferedOutputStream bos = new BufferedOutputStream(b.setBinaryStream(0L));
BufferedInputStream bis = new BufferedInputStream(is);
int bytes;
try {
while((bytes = bis.read()) != -1){
bos.write(bytes);
}
bis.close();
bos.close();
conn.commit();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
《--------获取图片到到页面--------------》
public JPEGImageEncoder getPic(String id,HttpServletResponse res) throws IOException{
Connection conn = null;
Statement stmt = null;
PreparedStatement ps = null;
ResultSet rs = null;
BufferedInputStream imageStream = null;
BufferedImage image = null;
JPEGImageEncoder encoder = null;
ServletOutputStream sos = res.getOutputStream();
try {
conn = ds.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
System.out.println("initialization succeed!!");
String preCursor = "select id,pic from pic where id='1'";
rs = stmt.executeQuery(preCursor);
rs.next();
imageStream = new BufferedInputStream(((Blob)rs.getBlob(2)).getBinaryStream());
try {
image = ImageIO.read(imageStream);
encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
imageStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return encoder;
}
从数据库获取图片,导出到本地的完整代码:
package dbcon;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class DBManager {
private String url = "jdbc:oracle:thin:@10.23.65.21:1521:orcl";
private String userName = "test";
private String password = "test";
private String driver = "oracle.jdbc.driver.OracleDriver";
private Connection conn;
public DBManager(){
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void getPic(String picPath) throws IOException{
Statement stmt = null;
PreparedStatement ps = null;
ResultSet rs = null;
BufferedInputStream imageStream = null;
BufferedImage image = null;
JPEGImageEncoder encoder = null;
try {
conn.setAutoCommit(false);
stmt = conn.createStatement();
System.out.println("initialization succeed!!");
String preCursor = "select id,zp from zpb where id='2220087'";
rs = stmt.executeQuery(preCursor);
while(rs.next()){
imageStream = new BufferedInputStream(((Blob)rs.getBlob(2)).getBinaryStream());
try {
String id = rs.getString(1);
File picturePath = new File(picPath +"/"+ id +".jpg");
boolean created = false;
if(!picturePath.exists()){
created = picturePath.createNewFile();
} else {
created = true;
}
if(created){
// ServletOutputStream sos = res.getOutputStream();
OutputStream ostream = new FileOutputStream(picturePath);
image = ImageIO.read(imageStream);
encoder = JPEGCodec.createJPEGEncoder(ostream);
encoder.encode(image);
imageStream.close();
ostream.flush();
ostream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] s){
DBManager manager = new DBManager();
String localPath = "E:/testpics";
try {
manager.getPic(localPath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关推荐
主要介绍了Java从数据库中读取Blob对象图片并显示的方法,实例分析了Java读取数据库中Blob对象图片的技巧与操作方法,需要的朋友可以参考下
kettle通过java代码将数据库blob 字段抽取到本地文件
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
2、LINUX下启动TDS管理界面到操作端显示 383 3、命令模式启动与停止方式 384 4、TDS日志文件路径 384 5、TDS WEB访问路径及其默认账户 384 6、命令模式导出与导入LDIF 385 7、 界面形式迁移TDS/LDAP 385 8、TDS处于...
友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 ...
18. 图片爬虫:输入某网址,爬出其图片显示在页面上,可以放大预览。可保存到服务器上,到图片管理里面 19. 站内信:收信箱和发信箱, websocket技术通讯技术做的及时收信提醒,可配置语音提示来信 20. 系统设置:...
修复MSSQL数据库环境下,信息添加时,无法保存上传图片的BUG; 修复MSSQL数据库环境下,自增主键表在save后,无法立即获取新增记录的id的bug. 优化JDiyRequest的InputStream(允许使用第三方上传组件). 修复数据库...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...
页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp...
20 支持从服务器URL或本地直接插入透明浮动图片到Word,Excel文档 新增加的AddPicFromURL和AddPicFromLocal函数可以直接从URL或本地插入透明的浮动图片到Office文档 21 支持将手工绘制的图片作为透明浮动的图片增加...