java操作blob问题

shihp 2009-07-20 05:48:23
我用java程序将图片存入oracle数据库的blob字段,但读出来存成图片文件后,windows不能预览,用画图和图片浏览器不能打开,但用photoshop能打开.
这是写入数据库的代码:
String sqlRs = "select zp from ts_jgzp where zpdm='" + phName +
"' and xh='"+(tot+1)+"' for update";
rs = stmt.executeQuery(sqlRs);
if (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
outStream.write(photo);
outStream.flush();
outStream.close();
log = "0^0^";
}
使用plsql导出图片也是不能正常打开,只能用photoshop看
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihp 2009-07-22
  • 打赏
  • 举报
回复
谢谢,问题解决了,代码里的photo是个byte数组,是生成的这个数组问题了
suncrafted 2009-07-21
  • 打赏
  • 举报
回复
学习了
robin_ares 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rumlee 的回复:]
outStream.write(photo);
这里你写的好像是直接写入一个对象啊,你取图片文件的字节,按照字节存进去,取出的时候也按照字节取,这样肯定就不会有问题的。
[/Quote]
同意
基本写法如下
BufferedInputStream bis = null;
bis = new BufferedInputStream(new FileInputStream(photo));
byte[] data = new byte[8192];
while((count = bis.read(data)) != -1){
outStream.write(data,0,count);
}
一下子写入整个文件,会有问题的。
另外证明ps真的很强,什么都能读出来
inthirties 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 robin_ares 的回复:]
引用 1 楼 rumlee 的回复:
outStream.write(photo);
这里你写的好像是直接写入一个对象啊,你取图片文件的字节,按照字节存进去,取出的时候也按照字节取,这样肯定就不会有问题的。

同意
基本写法如下
BufferedInputStream bis = null;
bis  = new BufferedInputStream(new FileInputStream(photo));
byte[] data = new byte[8192];
while((count = bis.read(data)) != -1){
      outStream.write(data,0,count);
}
一下子写入整个文件,会有问题的。
另外证明ps真的很强,什么都能读出来
[/Quote]

同意,以前好几年前,做一个程序,图也是老打不开,最后检查是最后掉了一个字节。
rumlee 2009-07-20
  • 打赏
  • 举报
回复
outStream.write(photo);
这里你写的好像是直接写入一个对象啊,你取图片文件的字节,按照字节存进去,取出的时候也按照字节取,这样肯定就不会有问题的。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧