《--------保存图片到数据库--------------》
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数据库。这些技术结合在一起,通常是为了实现一个Web应用,其中涉及到图片数据的存储和展示。 ...
本文将详细介绍如何在界面上显示从Oracle数据库中提取出的图片,以及如何利用Eclipse进行相关开发。 首先,理解Oracle数据库如何存储图片至关重要。在Oracle中,图片通常以BLOB(Binary Large Object)类型存储,这...
#### 二、使用Java保存图片至Oracle数据库 接下来,我们来看一下如何使用Java代码将图片保存到Oracle数据库中: 1. **加载图片文件**:首先通过`FileInputStream`类读取本地磁盘上的图片文件。 2. **注册Oracle...
而本文将详细介绍如何使用Java结合`PageOffice`来操作自带印章并连接到Oracle数据库。 首先,我们需要了解`PageOffice`的基本用法。`PageOffice`是一款国产的Office文档组件,它可以实现在服务器端直接读写Office...
Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...
在Java编程中,将图片保存到数据库是一种常见的需求,特别是在构建Web应用时,例如用户头像、产品图片等。这个小测试项目展示了如何通过Java处理图片流并将它们存储到数据库中,然后再取出。以下是关于这个过程的...
在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...
"jsp+servlet+oracle上传图片到数据库(非路径)"这个主题涉及的是一个常见的Web应用开发技术,它利用JavaServer Pages (JSP)、Servlet以及Oracle数据库来实现图片的上传和展示,而不是仅仅存储图片的路径。...
- **准备环境**:首先确保已经安装了Oracle数据库客户端和相应的驱动程序,例如JDBC驱动,以便通过编程语言(如Java、Python等)与数据库交互。 - **连接数据库**:使用相应的连接字符串、用户名和密码建立与...
##### 3.1 获取图片到页面 ```java public JPEGImageEncoder getPic(String id, HttpServletResponse res) throws IOException { Connection conn = null; Statement stmt = null; PreparedStatement ps = null;...
最后,将从数据库获取的字节流转回图片并显示。这一步通常在前端完成,通过HTTP响应将字节流发送给浏览器,浏览器会自动解析并显示图片。在服务器端,我们可以使用`ServletOutputStream`将字节流写入HTTP响应。 `...
综上所述,将图片以二进制格式存储在Oracle数据库中并从数据库中取出显示到页面,涉及到文件读取、二进制数据处理、数据库操作以及HTTP响应的设置。通过理解这些概念和技巧,开发者能够更好地管理和展示数据库中的非...
7. **运行环境**:虽然未明确指出,但执行这个Demo可能需要一个支持JDBC连接的数据库(如MySQL、Oracle等),以及Java开发环境(如JDK)和相关的库,如数据库驱动。 8. **应用场景**:这种技术常见于Web应用中,...
- **保存图片**:类似于SQL Server,将图片读取为字节数组,然后使用`PL/SQL`过程或Java的JDBC进行插入操作。 - **读取图片**:查询`ImageBlob`字段,然后将二进制数据转化为流并发送到客户端。 4. **跨数据库...
// 保存图片到临时目录,然后转换为字节数组 byte[] imageData = fileItem.get(); // ... } catch (FileUploadException e) { // 处理异常 } } } ``` 从`FileItem`获取到的`imageData`可以用于存储到...
根据给定的信息,“pb保存图片到数据库”这一主题主要涉及PowerBuilder(PB)应用程序如何将图像数据存储到数据库中。以下是对该知识点的详细解析: ### 一、PowerBuilder简介 PowerBuilder 是一款由 Sybase 公司...
本示例展示了如何使用JSP(JavaServer Pages)将图片上传至Oracle数据库,并进行显示。以下是对这一过程的详细解释: 首先,我们需要在数据库中创建一个表来存储图片信息。在Oracle数据库中,可以使用SQL语句创建一...
本教程将详细讲解如何使用Java来实现BLOB(Binary Large Object)类型的大文件,如图片,在Oracle数据库中的存储和查找,这对于初学者理解和掌握JDBC技术极具价值。 首先,我们需要理解BLOB类型。BLOB是Oracle...
通过查询数据库获取图片信息,然后在JSP页面上使用HTML `<img>` 标签展示图片,其`src`属性指向服务器上的图片路径。 6. **JSP标签库**:Struts框架提供了一系列的JSP标签,如`<s:form>`、`<s:file>`等,这些标签...
上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...