怎样将java.sql.Blob与oracle.sql.BLOB进行转换

 我来答
greystar_cn
2015-11-02 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17263
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
1,java.sql.Blob与oracle.sql.BLOB
这两个blob仅仅是大小写不同,但是差异很大,java.sql.Blob是一个接口,而oracle.sql.BLOB是一个实现java.sql.Blob的类,并且还有很多扩展的属性和方法,注意不要搞混了。
2,JDBC2.0和JDBC3.0的问题
classes12.zip实现了JDBC2.0(JDK1.3),而JDBC2.0对于Blob的操作只有读,没有写,所以classes12.zip只好自己扩展了一套对Blob进行写的API,我的例子就是用了这套API。
ojdbc14.jar实现了JDBC3.0(JDK1.4),JDBC3.0已经包括了对Blob写的操作,而ojdbc14.jar也实现了该API。

java.sql.Blob blob = rs.getBlob("ZIP_DATA");
oracle.sql.BLOB obb = (oracle.sql.BLOB) blob;//这样它会报.ClassCastException->解决办法,那一个封装类来处理类型不匹配问题:
public int setBytes(long pos, byte[] bytes) throws SQLException
{
//[weblogic]
if (blob instanceof weblogic.jdbc.vendor.oracle.OracleThinBlob)
{
weblogic.jdbc.vendor.oracle.OracleThinBlob oBlob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) blob;
return oBlob.putBytes(pos, bytes);
}
//[endweblogic]
//[websphere]

if (blob instanceof oracle.sql.BLOB)
{
oracle.sql.BLOB oBlob = (oracle.sql.BLOB) blob;
return oBlob.putBytes(pos, bytes);
}
//[endwebsphere]

return this.blob.setBytes(pos, bytes);
}

虽然只列出了一个方法,但核心就在这里了

BossThinBlob bossThinBlob = new BossThinBlob(rs.getBlob("ZIP_DATA"));
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式