救命!!!MySQL表中有一个类型为blob的字段,怎样更新这个字段的值为一张图片?

时间:2021-09-07 15:07:51
使用的是MySQL4.0.15数据库和Tomcat4.1.12。
假如,原先这个pic字段的值为1234,但是执行完下面的更新操作后用流输出根本就看不到图片,也没有出现任何错误!

//更新字段pic为一张图片
for(int i=0;i<myUpload.getFiles().getCount();i++){
   com.jspsmart.upload.File myFile=myUpload.getFiles().getFile(i);
   if(!myFile.isMissing()){
      java.io.File file=new java.io.File(myFile.getFilePathName());
      java.io.FileInputStream fis=new java.io.FileInputStream(file);
 
      con=DBMgr.getConnetion();
      con.setAutoCommit(false);  
      sql="update mytable set pic=? where id=?";
      pstmt=con.prepareStatement(sql);
      pstmt.setBinaryStream(1,fis,(int)file.length());
      pstmt.setInt(2,1);
      pstmt.executeUpdate();               
      con.commit();
   }
}

//输出图片
sql="select pic from mytable where id=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,1);
rs=pstmt.executeQuery();
if(rs.next()){
   res.reset();
   res.setContentType("image/jpeg");
   ServletOutputStream sout=res.getOutputStream();
   InputStream in=rs.getBinaryStream(1);
   byte buff[]=new byte[1024];
   int i;
   while((i=in.read(buff))!=-1){
      sout.write(buff);
   }
   in.close();
   sout.close();
}

3 个解决方案

#1


最好不将图片文件插入到数据库中。。
只将文件名放进去。。。。

真实文件放到一目录下。。这样数据库较小。。

#2


不会。帮顶。

#3


谁知道我上面的代码错在什么地方呀?
为什么不能得到图片呢?

#1


最好不将图片文件插入到数据库中。。
只将文件名放进去。。。。

真实文件放到一目录下。。这样数据库较小。。

#2


不会。帮顶。

#3


谁知道我上面的代码错在什么地方呀?
为什么不能得到图片呢?