如何把oracle数据库里的blob类型的数据转换为byte数组 15

项目使用ssh框架整合的,在存的时候使用的是java,sql.blob类型存的,可是在取的时候出问题了。如果把得到的blob数据强制转换为oracle.sql.BLOB,... 项目使用ssh框架整合的,在存的时候使用的是java,sql.blob类型存的,可是在取的时候出问题了。如果把得到的blob数据强制转换为oracle.sql.BLOB,然后使用byte[] b=imgBlob.getBytes();//imgBlob为oracle.sql.BLOB类型 没有错误提示,也没有效果。如果使用byte[] b=imgBlob.getBytes(0L, (int) (imgBlob.length()));//此时imgBlob为java,sql.blob类型 报错调用中的无效参数: getBytes()。

不知道在进行三大框架整合的时候如何取bolb的数据类型。麻烦大家帮我解决下问题或者发给我一个跑的起来的使用三大框架存取blob的案例,非常感谢。
展开
 我来答
du瓶邪
推荐于2017-10-11 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2950万
展开全部

代码如下:

public byte[] blob2ByteArr(Blob blob) throws Exception {
     
        byte[] b = null;
        try {
            if (blob != null) {
                long in = 0;
                b = blob.getBytes(in, (int) (blob.length()));
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("fault");
        }
 
        return b;
    }
ZCH光军
2014-01-14 · 超过29用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:70.1万
展开全部
Spring的applicationContext.xml文件中:
<!-- 定义bean,支持blob -->
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" />
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"></property>
</bean>
<!-- 编写bean,引用dataSource,注入blob支持,以创建SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="lobHandler" ref="lobHandler"></property>
</bean>
实体中将blob数据改成byte数组

实体映射文件中:
设置相应的protperty节点的type属性的值为type="org.springframework.orm.hibernate3.support.BlobByteArrayType“
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
薆love晴
2014-01-14
知道答主
回答量:12
采纳率:0%
帮助的人:5.7万
展开全部
String hql = "from tablename where pkid = ?"; QueryResult qr = super.baseDAO.queryObjects(hql,new Object[]{pkid} ); List<对象名> mylist = qr.getResult(); if (msmylist.size() > 0)
return (对象名)mylist.get(0); return null;

实体类中将blob字段的对象定义为byte[]类型
private byte[] context;
正常取值就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
完三青若阳兔嗨1C
2014-01-14 · TA获得超过185个赞
知道答主
回答量:66
采纳率:66%
帮助的人:38.8万
展开全部
Java代码实现方法
public byte[] blob2ByteArr(Blob blob) throws Exception {
byte[] b = null;
try {
if (blob != null) {
long in = 0;
b = blob.getBytes(in, (int) (blob.length()));
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception("fault");
}

return b;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琳博领先
2014-01-14 · TA获得超过152个赞
知道答主
回答量:32
采纳率:0%
帮助的人:20万
展开全部
应该可以直接映射到byte[]数组的吧
追问
直接映射到byte[]数组我已经写出来了。只是觉得这种方式应该也可以。可是在实际中却出错了,又不知道怎么解决,所以上来问问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式