package com;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
public class DBConnection {
private static Connection con = null;
public static synchronized Connection getConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con = DriverManager.getConnection(
" jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger");
return con;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleResultSet;
import oracle.jdbc.driver.OraclePreparedStatement;
public class TestBlog {
private static OracleResultSet ors=null;//**这里rs一定要用Oracle提供的
private static OraclePreparedStatement opst=null;//**PreparedStatement用
private static OracleConnection con=null;
public static void read_out(String toPath,String keyName) throws Exception{
con=(OracleConnection)DBConnection.getConnection();
FileOutputStream fout=null;
File file=new File(toPath);
fout=new FileOutputStream(file);
byte b[]=null;
String search="select name, IMAGE from test where name=? for update";
opst=(OraclePreparedStatement)con.prepareStatement(search);
opst.setString(1,keyName);
ors=(OracleResultSet)opst.executeQuery();
if(ors.next()){
System.out.println(ors.getString(1));
oracle.sql.BLOB blob=ors.getBLOB(2);
System.out.println(blob.length());
b=blob.getBytes(1,(int) blob.length());/**从BLOB取出字节流数据*/
}
fout.write(b,0,b.length);
fout.close();
System.out.println("out write is ok.....");
ors.close();
con.close();
}
public static void write_in(String filePath) throws Exception{
con=(OracleConnection)DBConnection.getConnection();
String insert = "insert into test values (?,?,EMPTY_BLOB())";
byte write[]=null;
FileInputStream fin=null;
File file=new java.io.File(filePath);
fin=new FileInputStream(file);
int flength=(int)file.length();//**读入文件的字节长度
write=new byte[flength];
int n=0;
n=fin.read(write, 0, flength-1);
/*
* 该方法效率十分 低下
* for(int i=0;i<flength;i++){
n=fin.read(write,i,flength-i);
System.out.println(i);
}*/
fin.close();
opst=(OraclePreparedStatement)con.prepareStatement(insert);
opst.setInt(1,7);
opst.setString(2,file.getName());
int up=opst.executeUpdate();
opst.clearParameters();
String search="select IMAGE from test where name=? for update";
opst=(OraclePreparedStatement)con.prepareStatement(search);
opst.setString(1,file.getName());
ors=(OracleResultSet)opst.executeQuery();
if(ors.next()){
oracle.sql.BLOB blob=ors.getBLOB(1);//**得到BLOB字段*//*
int j=blob.putBytes(1,write);//**将字节数组写入BLOB字段*//*
System.out.println("j==="+j);
}
ors.close();
con.close();
System.out.println("insert into ok");
}
public static void main(String[] args) throws Exception {
String filePath = "e:\\test.jpg";
write_in(filePath);
//read_out(filePath, "test.docx");
}
}
分享到:
相关推荐
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...
在IT领域,尤其是在Java开发与Oracle数据库交互的过程中,处理BLOB(Binary Large Object)类型字段是一项常见且重要的任务。BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据...
Oracle数据库系统支持多种复杂的数据类型,其中包括BLOB(Binary Large Object),用于存储非结构化的大数据,如图片、音频或视频文件。而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与...
批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将数据库中的图片资源导出到本地文件系统的情况。下面将详细介绍这一过程及其相关知识点。 首先,我们需要理解BLOB类型。BLOB...
Python如何操作Oracle的Blob字段,
在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载Oracle驱动 在Java程序中使用...
Oracle数据库中的BLOB(Binary Large Object)字段是用来存储大量二进制数据的,例如图片、文档或音频文件。在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对...
本篇文章将深入探讨如何使用C#语言访问Oracle数据库,并重点讲解处理Blob(Binary Large Object)字段的读写操作。 首先,让我们理解C#访问Oracle数据库的基本原理。Oracle数据库提供了一个名为ODP.NET(Oracle ...
### Oracle Blob字段上传与下载详解 #### 一、概述 在数据库系统中,二进制大对象(Binary Large Object,简称BLOB)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。Oracle数据库支持Blob...
指定文件夹下的所有文件上传至oracle的blob字段,java实现
在Oracle数据库中,Blob是一种用来存储二进制数据的数据类型,比如图像、音频或视频文件等。本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在...
本篇文章将详细探讨如何将ORACLE数据库中的BLOB(Binary Large Object)字段导入到SQL SERVER中的IMAGE字段,这通常涉及到数据转换、数据迁移以及可能的数据类型兼容性问题。 首先,让我们了解BLOB和IMAGE字段的...
oracle 存读数据库的blob字段 .net有两种方式向Oracle的blob字段中存储图片:
"基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案" 本文介绍了一种基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案。该方案使用JSP技术读取ORACLE数据库中的BLOB字段存储的坐标点,然后将坐标传递到...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
在描述中提到的“Oracle导出Clob,Blob等大字段工具”就是为了解决这个问题而设计的,它是一个自编写的实用程序,方便用户导出和管理Oracle数据库中的大对象数据。 Oracle数据库中的Clob类型用于存储大量的文本数据...
使用 JAVA 读取 ORACLE BLOB 字段实现上传下载 BLOB(Binary Large Objects)是一种二进制大对象类型,常用于存储大对象,例如图形、声音等。我们可以将 BLOB 区分为三种形式:声像数据、二进制数据和大文本数据。...
kettle通过java代码将数据库blob 字段抽取到本地文件
### 基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案 #### 概述 本文介绍了一种利用JSP技术访问Oracle数据库中BLOB字段存储的坐标点,并将其转换为图形显示的方法。这种方法充分利用了JSP与Java的集成优势,...