package hz;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
*
* @author gongchengwei
*
* @功能
* writeimage(String id,String imagepath,String imagename)
* 从数据里去读取数据..到数据保存到文件夹中
* @参数
* 1.String id 要查录的ID
* 2.String imagepath 保存到哪里的路径.(里有一张默认图片.如果没有图片会把那一张图片用文件流写一份)
* 3.String imagename 保存的文件名.
*
* @流程
* (创建数据连接)
* 1.根据传入的路径文件名去判断文件是否存在,
* 存在.直接跳出.
* 2.通过传入的参数去查找记录.
* 3.如果记录存在.把数据库里的数据写到文件夹
* 4.不存在的话..把那一张默认文件用文件流写一张图片
*
*
*/
public class WriteImageToFile {
private static final String URL = "jdbc:oracle:thin:@192.168.1.240:1521:persondb";
private static final String name="personal";
private static final String password="1234";
private static final String driver="oracle.jdbc.driver.OracleDriver";
public void writeimage(String id,String imagepath,String imagename){
/*java.util.Date d1=new java.util.Date();
java.text.SimpleDateFormat dformat=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateandtime=dformat.format(d1);
System.out.println("nonce time1 ="+dateandtime);
*/
//DataBase
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String sql="SELECT T_IMAGE FROM T_IMAGE_LOB where T_ID = '"+id+"'";
System.out.println(sql);
String filepath=imagepath+imagename; //"F:/pp/"+"1.jpg"
System.out.println("filepath = "+filepath);
File f=new File(filepath);
if(f.exists()){//判断文件是否存在..如果存在直接退出
System.out.println("文件已存在");
}else{
try{
Class.forName(driver).newInstance();
con = DriverManager.getConnection(URL,name,password);
if(con!=null){
con.setAutoCommit(true);
}
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()){
Blob b = rs.getBlob("T_IMAGE");
InputStream in=b.getBinaryStream(); // 建立输出流
//FileInputStream in =(FileInputStream)b.getBinaryStream();
FileOutputStream file=new FileOutputStream(filepath);
int len=(int)b.length();
byte[] buffer=new byte[len]; // 建立缓冲区
System.out.println("file size ="+len);
while((len=in.read(buffer)) != -1){
file.write(buffer,0,len);
}
file.close();
in.close();
con.commit();
}else{
FileInputStream infile=new FileInputStream(imagepath+"/defaultimg.jpg");
FileOutputStream file=new FileOutputStream(filepath);
int len=4086;
byte[] buff = new byte[4086];
while((len=infile.read(buff)) != -1){
file.write(buff,0,len);
}
file.close();
infile.close();
con.commit();
}
}catch(Exception e){
//
//System.out.println("12:"+e.getMessage());
try {
if(con!=null){
con.rollback();
con.setAutoCommit(true);
}
}catch (SQLException ex2){
//throw new DatabaseException(" rollback error.", ex2);
}
//throw new DatabaseException("Unable to commit con, database has been rollbacked.", ex);
}finally{
try{
rs.close();
stmt.close();
if (con != null) {
try {
con.close();
con = null;
}catch (SQLException ex3) {
//throw new DatabaseException("Error occured in close con.", ex3);
}
}
}catch (Exception e) {
// throw new DatabaseException("Error occured in close con.", ex3);
}
}
}
/*
java.util.Date d2=new java.util.Date();
java.text.SimpleDateFormat dformat2=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateandtime2=dformat.format(d2);
System.out.println("nonce time2 ="+dateandtime2);
*/
}
public void delstarorg(String imagepath,String imagename){//删除过期文件
// System.out.println("del file = "+imagepath+imagename);
File file =new File(imagepath+imagename);
if(file.exists()){
file.delete();
}
}
//测试
public static void main(String args[]){
System.out.println("start");
WriteImageToFile witf=new WriteImageToFile();
witf.writeimage("测试六 ,429004195508052666.jpg","F:/","cbc.jpg");
System.out.println("end");
}
}
分享到:
相关推荐
本篇文章将详细探讨如何利用Java与JAI-ImageIO库进行JPEG(jpg)与RAW格式图片之间的转换。 首先,让我们了解这两种图像格式。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像格式,适用于...
JAI是Oracle提供的一个扩展Java 2D API的库,它提供了多种高级图像处理功能,包括读取、写入和操作各种图像格式,如TIFF。这个库使得开发者可以方便地处理复杂的图像操作,如颜色空间转换、几何变换等。 2. `jai-...
在Java编程中,Oracle数据库中的BLOB(Binary Large Object)类型用于存储大量的二进制数据,如图片、视频或文档。这篇博客文章“JAVA操作Oracle blob类型”将深入探讨如何在Java应用程序中有效地管理和操作Oracle...
在处理 Oracle 数据库中的二进制大型对象(Binary Large Object,简称 Blob)时,开发者经常会遇到两个相似但不同的概念:`java.sql.Blob` 和 `oracle.sql.BLOB`。 1. **`java.sql.Blob`**: - 这是一个 Java 接口...
在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载Oracle驱动 在Java程序中使用...
"Oracle导出图片源代码"是针对这个需求编写的一段程序,它可以有效地从Oracle数据库中导出存储在BLOB字段中的图片。 首先,我们要理解Oracle数据库中如何存储和访问图片。BLOB字段用于存储大量的二进制数据,包括...
Oracle数据库在Java开发中也有广泛应用,通过JDBC(Java Database Connectivity)接口,Java程序可以与Oracle数据库进行交互。学习如何使用Java连接Oracle数据库、执行SQL语句、处理结果集,以及处理数据库异常,都...
在Java编程中,有时我们需要将图像数据存储到数据库中,然后能够从数据库中读取出来。这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片...
该课程设计项目主要基于Java技术和Oracle数据库,旨在实现一个微信小程序健身预约系统。这个系统能够为用户提供方便快捷的健身预约服务,用户可以在微信小程序中查看健身房的设施、教练信息,并进行预约操作。以下是...
本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...
在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...
Java Advanced Imaging (JAI) 是Oracle提供的一套用于处理图像的高级API,它提供了丰富的图像操作功能,包括读取、写入、转换和处理多种图像格式。在这个场景中,我们需要用到`jai_core-1.1.3.jar`和`jai-codec-...
你可以从Oracle官网下载并安装JMF,然后将其jar文件添加到项目的类路径中。 2. **创建MediaLocator对象**: 这个对象用于指定视频文件的位置。例如,如果视频文件在本地,你可以通过"file://path/to/your/video.mp4...
11. **Java.jpg**:这个文件可能是Java语言相关的图形或logo,可能用于教学、展示或作为项目标识。 总的来说,"Java饮食文化"是对Java编程实践中的一种形象化的表述,涵盖了从语言特性和社区规范到开发工具和生态...
本篇文章将深入探讨如何在MySQL和Oracle数据库中插入Blob数据,并提供相关的源码实例。 一、MySQL中的Blob数据插入 MySQL提供了多种方式插入Blob数据,包括使用PreparedStatement接口。以下是一个Java源码示例: ...
在本项目中,“java用hibernate连接数据库提取中文”是利用Hibernate框架在Eclipse集成开发环境中与Oracle数据库进行交互,以读取和处理中文数据的小程序。下面我们将详细讨论相关的知识点。 首先,我们需要了解...
在提供的压缩包中,"jar.jpg"可能是关于某些库或组件的截图,"readme.txt"可能包含安装或配置的指南,"src"目录包含了源代码,而"web"目录则可能包含了Web应用程序的静态资源和部署配置。 总的来说,SSH+Oracle整合...
要将Blob中的JPG导出,首先需要在Java代码中加载Oracle JDBC驱动,然后创建一个数据库连接。这可以通过以下代码实现: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = ...
在《Oracle数据类型.jpg》中,可能展示了Oracle数据库中的各种数据类型,包括: 1. **数值类型**:NUMBER、INTEGER、BINARY_INTEGER、PLS_INTEGER等,用于存储整数和浮点数。 2. **字符类型**:VARCHAR2、CHAR、LONG...
本文将深入探讨如何在Oracle数据库中进行照片的读取与写入。 首先,我们需要了解如何将本地照片存入Oracle数据库。这通常涉及到BLOB(Binary Large Object)数据类型,它是Oracle用于存储大块二进制数据的字段类型...