java读取图像文件存入oracle中blob字段源代码

数据库:oracle 10G XE

数据源驱动:jdbc12.jar

文件名:WriteBlob

数据库中建立一个为clobtest的表,内有两个字段,name (varchar2(20)),content(blob)。

1package dbdriver;
2
3/** *//**
4 * 2008-09-28
5 * @author duduli
6 * email: lxyzj2000@gmail.com
7 */
8import java.sql.*;
9import java.io.*;
10import oracle.sql.*;
11
12public class WriteBlob {
13
14  public static void main(String[] args) {
15    try {
16      String fName2 = "";
17      String fileName = "E:\\jianxin.bmp";
18//E盘下游个jianxin.bmp的图像文件
19      File f = new File(fileName);
20      String fName = f.getName();
21      int i = fName.lastIndexOf('.');
22      if (i > 0 && i < fName.length()-1){
23          fName2 = fName.substring(0,i);
24        }
25      System.out.println(fName2);
26//获得文件名,出去后缀的文件名。
27      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
28      Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:XE", "system", "duduli  ");
29      conn.setAutoCommit(false);
30      BLOB blob = null;
31      PreparedStatement pstmt = conn.prepareStatement("insert into blobtest(name,content) values(?,empty_blob())");
32      pstmt.setString(1, fName2);
33      pstmt.executeUpdate();
34      pstmt.close();
35      pstmt = conn.prepareStatement("select content from blobtest where name= ? for update");
36      pstmt.setString(1, fName2);
37      ResultSet rset = pstmt.executeQuery();
38      if (rset.next()) {
39        blob = (BLOB) rset.getBlob(1);
40      }
41
42      FileInputStream fin = new FileInputStream(f);
43      System.out.println("file size = " + fin.available());
44      pstmt = conn.prepareStatement("update blobtest set content=? where name=?");
45      OutputStream out = blob.getBinaryOutputStream();
46      byte[] data = new byte[(int) fin.available()];
47      fin.read(data);
48      out.write(data);
49      fin.close();
50      out.close();
51      pstmt.setBlob(1, blob);
52      pstmt.setString(2, fName2);
53      pstmt.executeUpdate();
54      pstmt.close();
55      conn.commit();
56      conn.close();
57        } catch (SQLException e) {
58          System.err.println(e.getMessage());
59          e.printStackTrace();
60        } catch (IOException e) {
61          System.err.println(e.getMessage());
62        }
63  }
64}

时间: 2024-10-28 17:29:09

java读取图像文件存入oracle中blob字段源代码的相关文章

在C#中如何向Oracle 中 BLOB 字段 插入数据

问题描述 在winform程序中(C#语言),需要将一张图片存入数据库中,Oracle中字段类型为BLOB,请问哪位大侠做过,给个示例,谢谢!QQ:36519258E-mail:dongwei_sy@163.com急用,不胜感激! 解决方案 解决方案二:DimstrConnAsStringDimobjConnAsOracleConnectionDimobjCommAsOracleCommandPrivateSubForm1_Load(ByValsenderAsSystem.Object,ByVa

【JAVA秒会技术之搞定BLOB数据类型】如何读取及展示数据库中BLOB类型的图片

如何读取及展示数据库中BLOB类型的图片    [前言]最近在做某一需求时,需要从Oracle数据库读取图片.本以为数据库存储的会是一个简单的url,前台可以直接展示,结果却发现是BLOB二进制类型,于是乎,百度/Google了关键字"二进制图片读取及展示",发现有很多"抄来抄去"的文章或博客,但是文章的质量都很低,而且结构比较混乱,看完之后仍然是"不明所以".     最后,花了近2个小时,耐心研究了一下,终于成功.于是总结如下,供大家参考,也

h2数据库文件写入oracle的blob字段,再从blob字段读取出来,重新生成h2.db文件

问题描述 h2数据库h2.db文件写入oracle的blob字段,再从blob字段读取出来,重新生成h2.db文件之后,用jdbc访问这个重新生成h2.db文件,会报表不存在的错误,无法操作h2. 请问大概是什么原因? 解决方案 你可以按以下依次排查:1.h2.db数据库文件本身是否完整?2.存入oracle是以二进制的数据存进去的,存入取出之间对数据文件是否有完整.像你这样可以完整报表不存在的错误,我觉得跟数据库存储是没有关系的.

java读写oracle的blob字段示例_java

复制代码 代码如下: package com.wanmei.meishu; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.InputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.DriverManager;import java

在JDBC中,setBinaryStream()方法给oracle的BLOB字段插值时报错

问题描述 报错:仅能绑定要插入LONG列的LONG值我是通过JDBC的方式从Oracle获取表数据,并通过WebService方式传输,然后别的应用获取后,插入到别的数据库.从Oracle获取BLOB字段时是通过getBinaryStream()获取的,传输后,在另外的应用中冶获得了该值,但通过setBinaryStram()插入时,如果获取的BLOB字段的内容太大(我存放的是图片),则会报上述错误,如果内容不大,则可以成功插入.ps:试过setByte()方式插入,但也包上述错误.与setBi

使用JDBC4.0操作Oracle中BLOB类型的数据方法_oracle

在JDBC4.0推出后,它的从多的特性正在受到广泛地关注.下面通过本文给大家介绍JDBC4.0操作Oracle中BLOB类型的数据的方法. 需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 create sequence seq_blobmodel_id start with 1 increment by 1 nocache; create table blobmodel ( blobid

如何在oracle的blob字段里保存多个文件

Oracle的BLOB字段类型可以用来保存长2进制数据.但是通常读写BLOB字段数据的代码都是很罗嗦,非细心编码很容易出错.我把这个功能集成到我的OCI包装库(ORADBI)中.下面的例子就是演示如何使用ORADBI把多个文件按保存到一个字段里. 我在另外的例子中将演示如何把BLOB字段中的数据还原为文件. 整个ORADBI是我在OCI基础上写的C语言API.从创作这个API到一直不断的更新维护,已经有1年多了.我也将一直维护下去,不断完善和添加新的功能.ORADBI是完全免费和完全开源的,使用

java 读取pdf文档中的表格数据

问题描述 java 读取pdf文档中的表格数据 如题,如何使用Java读取PDF表格中的数据!跪求帮助,在线等回复,急!急!急! 解决方案 用Java读取pdf中的数据用Java读取pdf中的数据用Java读取pdf中的数据 解决方案二: 读出来就行,还是一行一条数据 解决方案三: http://bbs.csdn.net/topics/320171930 解决方案四: 要是实在不行先转换了啊

excel文件-怎样通过JSP页面上传个Excel文件,并实现Java读取EXCEL存入数据库

问题描述 怎样通过JSP页面上传个Excel文件,并实现Java读取EXCEL存入数据库 用的语言是servlet+jsp+mysql和后面两个包commons-fileupload-1.3.1.jar jxl.jar 在线等,有没有会这个代码的大神 解决方案 两篇上传的,一篇jxl操作excel的.拼起来就是你要的http://www.the5fire.com/JSP%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E7%AE%80%E5%8D%95%E5%AE%9E%