如何将2进制文件流写入ORACLE数据库 [size=11px]如题,最近做一个项目,需求要求上传文件不但要放到服务器的上传文件夹中,在数据库中相应的表中的字段里也要放进该文件的2进制流。暂时忽略文件过大的情况。怎么将上传的文件2进制流写进ORACLE数据中的BLOB字段。[/size] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用的什么编程语言?找对应的接口就行了。java jdbc读写blob的示例,网上有很多。 没有用到JDBC,数据层用的是hibernate框架~我找到一个例子里面报错~因为用的是ORACLE的数据库,里面有一步将Java.sql.Blob转换为oracle.sql.BLOB,但是运行的时候报无法强制转换的错误 没有用到JDBC,数据层用的是hibernate框架~我找到一个例子里面报错~因为用的是ORACLE的数据库,里面有一步将Java.sql.Blob转换为oracle.sql.BLOB,但是运行的时候报无法强制转换的错误------------------------------------当然不能转,直接用byte[] 定义属性 楼上的说的也不是很清楚,如下示例代码应该可以只要将java.sql.Blob转化成SerialBlob类型,就能强转为oracle.sql.blob了 Session s = null; byte[] buffer = new byte[1]; buffer[0] = 1; try { SessionFactory sf = HibernateSessionFactory.getSessionFactory(); s = sf.openSession(); Transaction tx = s.beginTransaction(); Cat c = new Cat(); c.setName( "Robbin "); c.setImage(Hibernate.createBlob(buffer)); s.save(c); s.flush(); s.refresh(c, LockMode.UPGRADE); SerialBlob sBlob=(SerialBlob)c.c.getImage(); BLOB blob = (BLOB) sBlob; OutputStream out = blob.getBinaryOutputStream(); String fileName = "oraclejdbc.jar "; File f = new File(fileName); FileInputStream fin = new FileInputStream(f); int count = -1, total = 0; byte[] data = new byte[(int)fin.available()]; fin.read(data); out.write(data); fin.close(); out.close(); s.flush(); tx.commit(); } catch (Exception e) { System.out.println(e.getMessage()); } finally { if (s != null) try { s.close(); } catch (Exception e) {} } } 一个接口类型的属性映射到表字段要怎么做 数据库方向 推荐一本数据库基础的书? 发个语句请教下大家,当场给分 怎么将符号单引号插入ORACLE数据库的表中 ORA-12537:TNS连接已关闭 如何让显示的数据根据情况自动获取? 关于DATE型的计算,为何算出的天数不对呢 如何让一个序列回到初值,即(start with)值 一个很简单存储过程就是编译不过去,请高手指点 急急急 oracle instr和substr用法 Oracle菜菜在线求救......
------------------------------------当然不能转,直接用byte[] 定义属性
只要将java.sql.Blob转化成SerialBlob类型,就能强转为oracle.sql.blob了
Session s = null;
byte[] buffer = new byte[1];
buffer[0] = 1;
try {
SessionFactory sf = HibernateSessionFactory.getSessionFactory();
s = sf.openSession();
Transaction tx = s.beginTransaction();
Cat c = new Cat();
c.setName( "Robbin ");
c.setImage(Hibernate.createBlob(buffer));
s.save(c);
s.flush();
s.refresh(c, LockMode.UPGRADE);
SerialBlob sBlob=(SerialBlob)c.c.getImage();
BLOB blob = (BLOB) sBlob; OutputStream out = blob.getBinaryOutputStream();
String fileName = "oraclejdbc.jar ";
File f = new File(fileName);
FileInputStream fin = new FileInputStream(f);
int count = -1, total = 0;
byte[] data = new byte[(int)fin.available()];
fin.read(data);
out.write(data);
fin.close();
out.close();
s.flush();
tx.commit(); } catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if (s != null)
try {
s.close();
} catch (Exception e) {}
}
}