`
swordinhand
  • 浏览: 308460 次
  • 性别: 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);

谢谢!

相关推荐

Global site tag (gtag.js) - Google Analytics