`
maosheng
  • 浏览: 567941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java读写Oracle数据库blob

    博客分类:
  • Java
阅读更多
Java写音频文件到Oracle数据库:

public boolean SaveVoiceFileToDb(String filename,String information_number,long sequece_number) {
    boolean returnflag=false;
    File file = new File(filename);
    String insertSQL = "insert into t_vedio(serial_number,information_number,vedio_information) values(?,?,empty_blob())";
    String updateSQL = "select vedio_information from t_vedio where information_number=? for update";

    BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
    BasicDataSource datasource=(BasicDataSource)bf.getBean("datasource");

   Connection con=null;
   PreparedStatement ps = null;
   ResultSet rs = null;
   FileInputStream in = null;
   System.out.println("read file " + filename + " length=" + file.length());
  try {
if (file.length() > 0) {
Class.forName(datasource.getDriverClassName());
con = DriverManager.getConnection(datasource.getUrl(),datasource.getUsername(),datasource.getPassword());
con.setAutoCommit(false);
ps = con.prepareStatement(insertSQL);
ps.setLong(1, sequece_number);
ps.setString(2, information_number);
// 插入一个空对象empty_blob()
ps.execute();
// 锁定数据行进行更新,注意“for update”语句
System.out.println(updateSQL);

ps=con.prepareStatement(updateSQL);
ps.setString(1, information_number);

rs = ps.executeQuery();
        while (rs.next()) {
// 得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("vedio_information");
OutputStream outStream = blob.getBinaryOutputStream();
// data是传入的byte数组,定义:byte[] data
if (!file.exists() || file.isDirectory())
{     throw new FileNotFoundException();
         }
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024];
int len=0;
while ((len=fis.read(buf)) != -1) {
outStream.write(buf, 0, len);
outStream.flush();
buf = new byte[1024];// 重新生成,避免和上次读取的数据重复
}
outStream.close();
       }
con.commit();
rs.close();
     } else {
System.out.println("read file " + filename + " error");
     }
  
    returnflag=true;
  
    } catch (Exception e) {
e.printStackTrace();
    } finally {
if (in != null)
try {      in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
         try {
      if (ps != null)   ps.close();
     if (con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
   }

return returnflag;
}


Java读音频文件从Oracle数据库:

public byte[] getVedioInfoByte(String information_number) {
    byte[] buffer = null;
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
conn = C3P0Helper.createInstance().getConnection();

String sql = "select v.vedio_information from t_vedio v where v.information_number=?";

stmt = conn.prepareStatement(sql);
stmt.setString(1, information_number);

stmt.execute();

rs = stmt.getResultSet();
// String filepath = "F:\\test_result.mp3";
// System.out.println("输出文件路径为:" + filepath);
         while (rs.next()) {
   oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
   if (blob != null && !blob.isEmptyLob()) {
   InputStream in = blob.getBinaryStream(); // 建立输出流
//    FileOutputStream file = new FileOutputStream(filepath);
   int len = (int) blob.length();
            buffer = new byte[len]; // 建立缓冲区
              while ( (len = in.read(buffer)) != -1) {
// file.write(buffer, 0, len);
break;
            }
//          file.close();
            in.close();
   System.out.println(terminal_no + "'s vedio information size:"+len);
}

      }

     } catch (SQLException ex2) {

ex2.printStackTrace();

     } catch (Exception ex2) {

         ex2.printStackTrace();

     } finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}

if (conn != null) {
conn.close();
}

} catch (SQLException ex1) {

}

     }

     return buffer;
}
分享到:
评论

相关推荐

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

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

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案.pdf

    本文介绍了一种基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案,展示了JSP技术、ORACLE数据库BLOB字段、坐标点的存储和读取、图形的显示、排样数据表设计、Samplegraph.jsp的功能、JAVA类的应用等知识点。

    java读写oracle的blob字段示例

    【Java读写Oracle BLOB字段】在Java编程中,与Oracle数据库交互时,有时需要处理存储大对象(LOB)的数据,比如图片、音频或大型文本文件。BLOB类型用于存储二进制大对象,本文将详细介绍如何使用Java来读取和写入...

    java将图片写入数据库,并读出来(blob clob)

    以上就是使用Java将图片写入数据库(使用Blob类型)并读出来的基本流程。在实际应用中,你可能需要处理异常、事务管理、性能优化等方面的问题。同时,为了提高效率,可以考虑将数据分块读写,特别是处理大文件时。...

    oracle中的BLOB(照片)转换到mysql中

    Oracle数据库系统支持多种复杂的数据类型,其中包括BLOB(Binary Large Object),用于存储非结构化的大数据,如图片、音频或视频文件。而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与...

    使用hibernate对oracle读取blob

    Oracle数据库是广泛使用的数据库系统,它支持Blob类型的字段。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了与Oracle数据库交互的简便方式,包括处理Blob数据。本文将详细介绍如何使用Hibernate和JDBC...

    Java与Oracle大字段读写(含代码)

    本文将深入探讨Java与Oracle数据库在处理大字段,如BLOB类型数据时的交互方法。Oracle数据库是业界广泛使用的数据库管理系统,而Java作为多平台支持的编程语言,常用于开发与数据库交互的应用程序。在这个主题中,...

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

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

    Oracle导出Clob,Blob工具

    Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...

    oracle,weblogic读写blob

    本篇文章将深入探讨如何在 Oracle 数据库与基于 WebLogic 的应用中读写 BLOB 数据。 首先,Oracle 数据库提供了多种操作 BLOB 值的方法。在 SQL 查询中,你可以使用 `SELECT BLOB_COLUMN FROM TABLE` 来读取 BLOB ...

    clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle

    以下是如何使用Java读写Oracle数据库中CLOB和BLOB字段的基本步骤: 1. **建立数据库连接**:使用`java.sql.DriverManager.getConnection()`方法,提供数据库URL、用户名和密码来创建`Connection`对象。 2. **创建...

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案 (2007年)

    介绍了JSP处理图形的一种方法,该方法使用JSP访问ORACLE数据库BLOB字段,BLOB字段存储的是排样后的若干图形的坐标点,然后把坐标传递到JAVA中显示图形,在图形正中还显示了编号,充分显示了JSP结合JAVA应用的优势。

    2022年优秀-Oracle数据库中的Web服务.pptx

    Oracle 数据库 10g 中的 Web 服务可以使用标准的或第三方的 Java 库扩展数据库功能,实现对 PL/SQL 类型(CLOB、BLOB)的 Web 服务支持。 6. 快速连接故障切换 Oracle 数据库 10g 中的 Web 服务可以实现快速连接...

    Java从数据库中读取Blob对象图片并显示的方法

    这里我们主要探讨两种Java从数据库中读取Blob对象图片并显示的方法。 **方法一** 这个方法涉及从数据库获取Blob对象的输入流,并将其直接写入HTTP响应的输出流,以便浏览器可以解析并显示图片。以下是实现步骤: ...

    Oracle blob字段上传下载

    Oracle数据库支持Blob类型,允许用户在数据库中直接存储和管理这些大型文件。本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: ...

    一个关于更新Oracle中Blob问题

    总之,更新Oracle数据库中的Blob字段需要对Java的JDBC API有深入理解,特别是Blob对象的处理。`TestBlob.java`可能是解决特定Blob更新问题的一个实例,通过阅读和分析这个文件,我们可以学习如何在实际项目中有效地...

    oracle数据库连接包

    Oracle数据库连接包通常指的是JDBC(Java Database Connectivity)驱动,它是Oracle公司为Java开发的接口,使得Java应用程序能够与Oracle数据库进行通信。JDBC驱动分为四种类型:Type 1、Type 2、Type 3和Type 4,...

    [java]将Byte存入blob.rar

    可以使用`oracle.sql.BLOB`(Oracle数据库)或`com.microsoft.sqlserver.jdbc.SQLServerBlob`(SQL Server)等特定数据库实现。 三、将Byte存入Blob的步骤 1. 读取二进制数据:通常,二进制数据可以来源于文件,...

Global site tag (gtag.js) - Google Analytics