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

JDBC4.0插入blob真方便

    博客分类:
  • JAVA
阅读更多
今天试用了一下oracle的支持JDBC4.0标准的客户端ojdbc6.jar,发现用了这个之后,插入blob字段变得简单多了。

以前如果想向oracle数据库里插入一个blob的字段,需要先执行一条insert语句,插入个empty_blob,然后再select for update,取出来之后把Blob字段cast成oracle自己的BLOB类型,然后调用BLOB的setBinaryStream()方法获得一个OutputStream,再向这个OutputStream中写入内容,最后再提交,这种方法的介绍网上到处都是,不用多说。

现在有了JDBC4.0,这个过程变简单了许多,调用Connection的createBlob()方法创建一个Blob对象,调用Blob对象的setBinaryStream()方法获得一个OutputStream,再向这个OutputStream中写入内容,然后直接把Blob写入到数据库里就行了。

Blob blob = conn.createBlob();
            OutputStream out = blob.setBinaryStream(0);
            byte[] temp = new byte[4096];
            int length;
            while ((length = is.read(temp)) != -1) {
                out.write(temp, 0, length);
            }

PreparedStatement pstmt = conn
					.prepareStatement("insert into t_blob_test(name,content) values(?,?)");
			pstmt.setString(1, "name2");
            pstmt.setBlob(2, blob);
			pstmt.executeUpdate();


分享到:
评论
4 楼 leaos 2016-06-07  
sdsa
3 楼 oztime 2012-02-22  
swordinhand 写道
oztime 写道
这段代码你操作过吗?我执行报错,
OutputStream out = blob.setBinaryStream(0);
这样改没错
OutputStream out = blob.setBinaryStream(1);

谢谢!

我查了一下jdk文档,文档上说这个值应该至少是1
不过这段代码我确实用oracle的ojdbc6.jar执行成功过
我当时是照着Core Java上的代码写的
我刚才又看了一下,Core Java的例子也是用0
Blob coverBlob = connection.createBlob();
int offset = 0;
OutputStream out = coverBlob.setBinaryStream(offset);

不过还是按照标准的好,你用1没问题就用1呗

谢谢你的回复!
2 楼 swordinhand 2012-02-15  
oztime 写道
这段代码你操作过吗?我执行报错,
OutputStream out = blob.setBinaryStream(0);
这样改没错
OutputStream out = blob.setBinaryStream(1);

谢谢!

我查了一下jdk文档,文档上说这个值应该至少是1
不过这段代码我确实用oracle的ojdbc6.jar执行成功过
我当时是照着Core Java上的代码写的
我刚才又看了一下,Core Java的例子也是用0
Blob coverBlob = connection.createBlob();
int offset = 0;
OutputStream out = coverBlob.setBinaryStream(offset);

不过还是按照标准的好,你用1没问题就用1呗
1 楼 oztime 2012-02-09  
这段代码你操作过吗?我执行报错,
OutputStream out = blob.setBinaryStream(0);
这样改没错
OutputStream out = blob.setBinaryStream(1);

谢谢!

相关推荐

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

    在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...

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

    在Java的JDBC4.0版本中,处理Oracle数据库中的BLOB(Binary Large Object)类型数据是一项常见的任务,尤其在存储和检索大容量的二进制数据,如图像、音频或视频文件时。本篇文章将深入讲解如何使用JDBC4.0与Oracle...

    使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法

    在Java数据库连接(JDBC)4.0版本中,一个重要的新特性是对XML数据类型的原生支持。这一特性使得Java程序员能够更方便地在数据库中存储和检索XML文档,而无需进行繁琐的类型转换。在SQL 2003标准中引入XML数据类型后...

    JDBC4.1MR-javadoc-spec.zip

    `占位符来插入`Blob`、`Clob`和`NClob`对象,简化了大数据类型的处理。 6. **行集和批处理**: `RowSet`接口的实现更加完善,支持离线操作和事件通知,批处理功能也得到了加强,提高了批量操作的性能。 7. **更好的...

    MSSQL2005driver 驱动 sqljdbc1.2.jar

    随着时间的推移,微软发布了更高版本的JDBC驱动,例如sqljdbc4.jar,提供了对JDBC 4.0规范的支持,以及更多增强功能。开发者应考虑升级到更现代的驱动,以利用最新的功能和改进。 总结,sqljdbc1.2.jar作为SQL ...

    sqlserver jar

    在Java环境中,JDBC驱动程序扮演着桥梁的角色,将Java代码与数据库系统连接起来,实现数据的查询、更新、插入和删除等操作。 1. JDBC API:JDBC 是一种Java标准,提供了一组接口和类,让开发者可以编写跨平台的...

    jdbc学习资料 内部资料

    - **JDBC 4.0**:随Java SE 6发布,引入了自动类型映射等功能。 JDBC的核心结构包括两部分:**规范**和**实现**。规范是由Sun Microsystems定义的一组接口,而实现则是由具体的数据库厂商提供的驱动程序。为了使用...

    Microsoft SQL Server 2005 JDBC Driver

    1. **类型4驱动**:该驱动是纯Java实现,无需数据库特定的客户端库,可以在任何支持Java的平台上运行,实现了JDBC 3.0和4.0规范。 2. **高性能**:驱动优化了网络通信和数据传输,减少了数据库往返次数,提升了整体...

Global site tag (gtag.js) - Google Analytics