`
jy00509336
  • 浏览: 238215 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

java操作保存图片到oracle数据库及获取图片到页面显示

 
阅读更多

《--------保存图片到数据库--------------》
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对象图片并显示的方法,实例分析了Java读取数据库中Blob对象图片的技巧与操作方法,需要的朋友可以参考下

    kettle通过java代码将数据库blob 字段抽取到本地文件

    kettle通过java代码将数据库blob 字段抽取到本地文件

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    IBM WebSphere Portal门户开发笔记01

    2、LINUX下启动TDS管理界面到操作端显示 383 3、命令模式启动与停止方式 384 4、TDS日志文件路径 384 5、TDS WEB访问路径及其默认账户 384 6、命令模式导出与导入LDIF 385 7、 界面形式迁移TDS/LDAP 385 8、TDS处于...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 ...

    万能后台管理模板javaweb

    18. 图片爬虫:输入某网址,爬出其图片显示在页面上,可以放大预览。可保存到服务器上,到图片管理里面 19. 站内信:收信箱和发信箱, websocket技术通讯技术做的及时收信提醒,可配置语音提示来信 20. 系统设置:...

    JDiy框架与javaWeb建站平台 v2.6.1.zip

    修复MSSQL数据库环境下,信息添加时,无法保存上传图片的BUG; 修复MSSQL数据库环境下,自增主键表在save后,无法立即获取新增记录的id的bug. 优化JDiyRequest的InputStream(允许使用第三方上传组件). 修复数据库...

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...

    asp.net知识库

    页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp...

    NTKO文档在线编辑控件4.0.1.2

    20 支持从服务器URL或本地直接插入透明浮动图片到Word,Excel文档 新增加的AddPicFromURL和AddPicFromLocal函数可以直接从URL或本地插入透明的浮动图片到Office文档 21 支持将手工绘制的图片作为透明浮动的图片增加...

Global site tag (gtag.js) - Google Analytics