如何把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的案例,非常感谢。 展开
不知道在进行三大框架整合的时候如何取bolb的数据类型。麻烦大家帮我解决下问题或者发给我一个跑的起来的使用三大框架存取blob的案例,非常感谢。 展开
5个回答
展开全部
代码如下:
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;
}
展开全部
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“
<!-- 定义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“
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
正常取值就可以了
return (对象名)mylist.get(0); return null;
实体类中将blob字段的对象定义为byte[]类型
private byte[] context;
正常取值就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该可以直接映射到byte[]数组的吧
追问
直接映射到byte[]数组我已经写出来了。只是觉得这种方式应该也可以。可是在实际中却出错了,又不知道怎么解决,所以上来问问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询