`
imshare
  • 浏览: 323997 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

使用JDBC来操作Oracle的BLOB写入

阅读更多
package test;  
 
import java.io.BufferedInputStream;  
import java.io.FileInputStream;  
import java.io.PrintStream;  
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
 
public class Test {  
    private Connection conn;  
 
    /** 
     * 得到一个数据库的连接 
     *  
     * @return 返加Connection对象 
     */ 
    public Connection getConnection() {  
        try {  
            Class.forName("oracle.jdbc.driver.OracleDriver");  
            conn = DriverManager.getConnection(  
                    "jdbc:oracle:thin:@localhost:1521:lyx", "scott", "tiger");  
        } catch (ClassNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (SQLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return conn;  
    }  
 
    /** 
     * 向表中插入图片 
     *  
     * @param path图片所在的路径 
     * @return 整形 判断成功或失败 
     */ 
    public int insertImage(String path) throws Exception {  
        int i = 0;  
        Statement st = null;  
        ResultSet rs = null;  
        conn=this.getConnection();  
          
        conn.setAutoCommit(false);//设置数据库为不自动提交,必须的一步  
        st = conn.createStatement();  
        //先插入一个空对象,这里我调用了Empty_BLOB()函数  
        i = st.executeUpdate("insert into image (id,image) values (seq1.nextval,Empty_BLOB())");  
        //以行的方式锁定  
        rs = st.executeQuery("select image from image where id=(select max(id) from image) for update");  
        if (rs.next()) {  
            //得到流  
            oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);  
            //从得到的低级流构造一个高级流  
            PrintStream ps = new PrintStream(blob.getBinaryOutputStream());  
            BufferedInputStream bis = new BufferedInputStream(  
                    new FileInputStream(path));  
            byte[] buff = new byte[1024];  
            int n = 0;  
            //从输入到输出  
            while ((n = bis.read(buff)) != -1) {  
                ps.write(buff, 0, n);  
 
            }  
            //清空流的缓存  
            ps.flush();  
            //关闭流,注意一定要关  
            ps.close();  
            bis.close();  
        }  
        rs.close();  
        st.close();  
        conn.close();  
        return i;  
    }  
 
    public static void main(String[] args) throws Exception {  
        Test test=new Test();  
        test.insertImage("e:\\3.jpg");  
        System.out.println("OK");  
 
 
    }  
 
}  
分享到:
评论

相关推荐

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

    通过上述步骤,你就能在JDBC4.0环境中有效地使用Oracle数据库来存储和检索BLOB类型的数据。这种方法对于处理大量二进制数据的应用程序非常有用,如图片存储服务或文档管理系统。记得在开发过程中,定期测试和优化...

    JDBC+Hibernate将Blob数据写入Oracle

    在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...

    JDBC操纵Oracle数据库中的BLOB字段

    本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...

    使用JDBC4.0处理Oracle中BLOB类型的数据

    本篇文章将深入讲解如何使用JDBC4.0与Oracle数据库交互,涉及的主要知识点包括JDBC连接、序列的使用、BLOB对象的操作以及文件的读写。 首先,确保你已添加了Oracle JDBC驱动ojdbc6.jar到项目的类路径中。这个jar包...

    jdbc中如何处理Oracle___BLOB字段

    在处理Oracle BLOB数据时,可以利用JDK提供的`ResultSet`类中的`getBlob()`方法和`PreparedStatement`类中的`setBlob()`方法来实现对BLOB类型的读取和写入操作。具体步骤如下: 1. **读取BLOB数据**:通过`...

    Oracle blob字段上传下载

    本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: 1. **创建Blob字段:** 首先需要在数据库表中定义一个Blob类型的字段。 2. **...

    java对oracle数据库中blob字段的处理

    Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...

    jdbc+hibernate存取blob字段

    本篇将详细介绍如何使用JDBC(Java Database Connectivity)与Hibernate框架来操作Oracle数据库中的BLOB字段。 首先,Oracle数据库的BLOB字段提供了对大对象的高效存储,它的性能优于LONG字段,尤其适合存储大容量...

    mysql oracle 插入blob数据实例源码

    MySQL和Oracle都是广泛使用的数据库管理系统,它们都支持Blob类型的字段来存储这类数据。本篇文章将深入探讨如何在MySQL和Oracle数据库中插入Blob数据,并提供相关的源码实例。 一、MySQL中的Blob数据插入 MySQL...

    Oracle clob和blob在jdbc的应用

    在JDBC(Java Database Connectivity)中,我们可以使用特定的方法来操作这些类型的数据。 首先,我们需要建立与数据库的连接。在示例代码中,`JDBCUtils.getConnection()` 方法用于获取数据库连接。这个方法通常会...

    oracle中读取blob字段.doc

    ### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...

    上传图片,保存到数据库,jdbc操作blob

    在上面的代码中,我们使用JDBC连接数据库,并执行INSERT、SELECT和UPDATE语句来操作BLOB对象。 BLOB数据类型 BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制数据,如图片、音频、...

    Java存取OracleBlob字段,图片存储,Blob和BLOB的问题,Clob,oracle.docx

    因此,如果使用此版本的 JDBC 驱动,需要通过扩展 API 来实现 Blob 的写入功能。 - **JDBC 3.0**:正式引入了 Blob 数据的写入支持,使得数据的增删改查操作更为完整。 #### 三、容器环境的影响 - **WebLogic 容器*...

    oracle,weblogic读写blob

    在 SQL 查询中,你可以使用 `SELECT BLOB_COLUMN FROM TABLE` 来读取 BLOB 数据,并通过 PL/SQL 包如 `UTL_FILE` 或 `DBMS_LOB` 来进行写入和更新。`DBMS_LOB` 提供了一系列的子程序,如 `DBMS_LOB.CREATETEMPORARY`...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...

    oracle_java_blob

    你可以使用`ResultSet`和`CallableStatement`来查询BLOB数据并将其写入文件: ```java String selectSql = "SELECT FILE_CONTENT FROM MP3_STORAGE WHERE ID = ?"; try (PreparedStatement pstmt = conn.prepare...

Global site tag (gtag.js) - Google Analytics