关于图片存储到oracle数据库的问题,请大家帮忙看看!!!!!!!!!!!!!!!!!!!!!!!!

yierham 2010-11-16 11:08:28
网上例子很多,但是我直接拿来用就会出问题比如这个http://hi.baidu.com/homappy/blog/item/83e31d08f886033ce82488f3.html

执行pstmt.setBlob(2, BLOB.getEmptyBLOB());的时候提示oracle.sql.BLOB是不能转化成java.sql.Blob,请问大家都是怎么处理的啊!!!!!!!
...全文
100 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yierham 2010-11-17
  • 打赏
  • 举报
回复
我是把图片存到数据库中去
bb12152205gg 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kebin0001 的回复:]
資料不多用 getByte和setByte
資料很多用 stream。
[/Quote]

我一般就是这么做的
yierham 2010-11-17
  • 打赏
  • 举报
回复
this.strSQL="select * from dealer_image order by id desc";
rs=stmt.executeQuery(this.strSQL);
int id=0;
if(rs.next()){
id=rs.getInt("ID");
}
id=id+1;
this.strSQL="insert into dealer_image(ID,NAME,AGE,TIME,JPGIMAGE,STATUS) values(SEQ_DEALER.Nextval,'"+userid+"','"+userag+"',"+"sysdate,empty_blob(),0)";
stmt.executeUpdate(this.strSQL);
conn.setAutoCommit(false);
rs = stmt.executeQuery("select JPGIMAGE from dealer_image where id="+id+" for update");
if (rs.next())
{

Blob blob = rs.getBlob(1);
OutputStream out = ((oracle.sql.BLOB) blob).getBinaryOutputStream();
// OutputStream out = rs.getBlob(1).setBinaryStream(1L);

byte[] b = new byte[((oracle.sql.BLOB) blob).getBufferSize()];

InputStream fin = new FileInputStream("c:\\xxx.jpg");
int len = 0;
while ((len = fin.read(b)) != -1) {
}
out.write(b, 0, len);
fin.close();
out.close();
conn.setAutoCommit(true);
conn.commit();

}我采取这样的方式也还是不行,执行到Blob blob = rs.getBlob(1);就抱错了
错误是java.lang.AbstractMethodError: oracle.jdbc.driver.UpdatableResultSet.getBlob(I)Ljava/sql/Blob;
yierham 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 coolbamboo2008 的回复:]

那你的图片属性就用java.sql.Blob呗
[/Quote]谢谢你们的解答,但是我想解决这个问题嘛!!请问怎么设置图片属性?
mengyalizuopeng 2010-11-17
  • 打赏
  • 举报
回复
其实在实际生活中,很多上传的文件都是存在服务器端的一个文件夹里面的,因为一般的项目都会避免访问数据库的,这回影响性能!
yierham 2010-11-17
  • 打赏
  • 举报
回复
OracleResultSet rw =(OracleResultSet) stmt.executeQuery("select JPGIMAGE from dealer_image where id="+id+" for update");
if (rw.next())
{
BLOB blob = (BLOB)rw.getBlob(1);
OutputStream out = blob.getBinaryOutputStream();
File f = new File(Dir);
FileInputStream fis = new FileInputStream(f);
byte b[] = new byte[(int) f.length()];
int len=0;
len=fis.read(b);
fis.close();
out.write(b, 0, len);
System.out.println("图片大小:" + len);
out.close();
conn.setAutoCommit(true);
conn.commit();
}搞定
覆水难收 2010-11-17
  • 打赏
  • 举报
回复
应该存放到服务器的文件夹里,然后存放到数据库的实际就是一个String类型的路径.
coolbamboo2008 2010-11-17
  • 打赏
  • 举报
回复
那你的图片属性就用java.sql.Blob呗
Elim-Zhang 2010-11-16
  • 打赏
  • 举报
回复
其实在实际生活中,很多上传的文件都是存在服务器端的一个文件夹里面的,因为一般的项目都会避免访问数据库的,这回影响性能!
kebin0001 2010-11-16
  • 打赏
  • 举报
回复
資料不多用 getByte和setByte
資料很多用 stream。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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