`
jy00509336
  • 浏览: 243472 次
  • 性别: 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+EXTJS+ORACLE在页面显示BLOB类型保存的图片

    标题 "JAVA+EXTJS+ORACLE在页面显示BLOB类型保存的图片" 涉及到的技术栈主要包括Java后端开发、ExtJS前端框架以及Oracle数据库。这些技术结合在一起,通常是为了实现一个Web应用,其中涉及到图片数据的存储和展示。 ...

    在界面上显示Oracle数据库中的图片

    本文将详细介绍如何在界面上显示从Oracle数据库中提取出的图片,以及如何利用Eclipse进行相关开发。 首先,理解Oracle数据库如何存储图片至关重要。在Oracle中,图片通常以BLOB(Binary Large Object)类型存储,这...

    从oracle数据库中存取图片

    #### 二、使用Java保存图片至Oracle数据库 接下来,我们来看一下如何使用Java代码将图片保存到Oracle数据库中: 1. **加载图片文件**:首先通过`FileInputStream`类读取本地磁盘上的图片文件。 2. **注册Oracle...

    java操作pageoffice自带印章连接oracle数据库

    而本文将详细介绍如何使用Java结合`PageOffice`来操作自带印章并连接到Oracle数据库。 首先,我们需要了解`PageOffice`的基本用法。`PageOffice`是一款国产的Office文档组件,它可以实现在服务器端直接读写Office...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...

    java存图片到数据库

    在Java编程中,将图片保存到数据库是一种常见的需求,特别是在构建Web应用时,例如用户头像、产品图片等。这个小测试项目展示了如何通过Java处理图片流并将它们存储到数据库中,然后再取出。以下是关于这个过程的...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...

    jsp+servlet+oracle上传图片到数据库(非路径)

    "jsp+servlet+oracle上传图片到数据库(非路径)"这个主题涉及的是一个常见的Web应用开发技术,它利用JavaServer Pages (JSP)、Servlet以及Oracle数据库来实现图片的上传和展示,而不是仅仅存储图片的路径。...

    java向数据库插入数据与把数据显示到页面

    ##### 3.1 获取图片到页面 ```java public JPEGImageEncoder getPic(String id, HttpServletResponse res) throws IOException { Connection conn = null; Statement stmt = null; PreparedStatement ps = null;...

    图片存入Oracle中,用clob和blob两种方式

    - **准备环境**:首先确保已经安装了Oracle数据库客户端和相应的驱动程序,例如JDBC驱动,以便通过编程语言(如Java、Python等)与数据库交互。 - **连接数据库**:使用相应的连接字符串、用户名和密码建立与...

    将图片以字节流存到数据库再从数据库获取显示

    最后,将从数据库获取的字节流转回图片并显示。这一步通常在前端完成,通过HTTP响应将字节流发送给浏览器,浏览器会自动解析并显示图片。在服务器端,我们可以使用`ServletOutputStream`将字节流写入HTTP响应。 `...

    图片以二进制保存到Oracle,取出并显示到页面示例

    综上所述,将图片以二进制格式存储在Oracle数据库中并从数据库中取出显示到页面,涉及到文件读取、二进制数据处理、数据库操作以及HTTP响应的设置。通过理解这些概念和技巧,开发者能够更好地管理和展示数据库中的非...

    图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)

    7. **运行环境**:虽然未明确指出,但执行这个Demo可能需要一个支持JDBC连接的数据库(如MySQL、Oracle等),以及Java开发环境(如JDK)和相关的库,如数据库驱动。 8. **应用场景**:这种技术常见于Web应用中,...

    SqlServer与Oracle保存与读取图片二进制流

    - **保存图片**:类似于SQL Server,将图片读取为字节数组,然后使用`PL/SQL`过程或Java的JDBC进行插入操作。 - **读取图片**:查询`ImageBlob`字段,然后将二进制数据转化为流并发送到客户端。 4. **跨数据库...

    jsp 上传图片并保存到数据库里的servlet代码和jsp代码

    // 保存图片到临时目录,然后转换为字节数组 byte[] imageData = fileItem.get(); // ... } catch (FileUploadException e) { // 处理异常 } } } ``` 从`FileItem`获取到的`imageData`可以用于存储到...

    pb保存图片到数据库

    根据给定的信息,“pb保存图片到数据库”这一主题主要涉及PowerBuilder(PB)应用程序如何将图像数据存储到数据库中。以下是对该知识点的详细解析: ### 一、PowerBuilder简介 PowerBuilder 是一款由 Sybase 公司...

    图片存入数据库 图片 数据库

    本示例展示了如何使用JSP(JavaServer Pages)将图片上传至Oracle数据库,并进行显示。以下是对这一过程的详细解释: 首先,我们需要在数据库中创建一个表来存储图片信息。在Oracle数据库中,可以使用SQL语句创建一...

    java实现 BLOB图片大文件在oracle中的存储和查找

    本教程将详细讲解如何使用Java来实现BLOB(Binary Large Object)类型的大文件,如图片,在Oracle数据库中的存储和查找,这对于初学者理解和掌握JDBC技术极具价值。 首先,我们需要理解BLOB类型。BLOB是Oracle...

    struts文图片上传 并存入数据库 在jsp页面显示

    通过查询数据库获取图片信息,然后在JSP页面上使用HTML `<img>` 标签展示图片,其`src`属性指向服务器上的图片路径。 6. **JSP标签库**:Struts框架提供了一系列的JSP标签,如`<s:form>`、`<s:file>`等,这些标签...

    上传图片,保存到数据库,jdbc操作blob

    上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...

Global site tag (gtag.js) - Google Analytics