mysql blob字段存储图片操作示例

openkk 12年前

表结构:

create table view(      id int unsigned NOT NULL AUTO_INCREMENT,       catid int,title varchar(256),      picture MEDIUMBLOB,       content TEXT,PRIMARY KEY (id)  );
java类操作:
import java.awt.Image;  import java.io.*;  import java.nio.ByteBuffer;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.SQLException;  import java.util.logging.Level;  import java.util.logging.Logger;  import javax.swing.ImageIcon;  import org.bean.View;    /**   *   * @author weijian.zhongwj   */  public class ViewPointDao {        public static View getView(Integer catId) {          View view = new View();          try {              String sql2 = "SELECT title, content, picture FROM view where catid=? limit 1";              PreparedStatement stmt2 = BaseDaoFactory.getInstance().prepareStatement(sql2);              stmt2.setInt(1, catId);              ResultSet resultSet = stmt2.executeQuery();              while (resultSet.next()) {                  String name = resultSet.getString(1);                  String description = resultSet.getString(2);                    ByteBuffer bb = ByteBuffer.allocate(1024 * 1024);                  byte[] buffer = new byte[1];                  InputStream is = resultSet.getBinaryStream(3);                    while (is != null && is.read(buffer) > 0) {                      bb.put(buffer);                  }                  ImageIcon icon = new ImageIcon(bb.array());                  view.setImage(icon.getImage());                  view.setTitle(name);                  view.setContent(description);                  return view;              }          } catch (IOException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          } catch (SQLException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          }          return null;      }        public static boolean addView(View view) {          FileInputStream fis = null;          try {                if (exit(view.getCatId())) {                  return update(view);              }                String sql = "INSERT INTO view (title, content, catid, picture) VALUES (?, ?, ?, ?)";              PreparedStatement stmt = BaseDaoFactory.getInstance().prepareStatement(sql);              stmt.setString(1, view.getTitle());              stmt.setString(2, view.getContent());              stmt.setInt(3, view.getCatId());                if (view.getImageFile() != null) {                  File image = new File(view.getImageFile());                  fis = new FileInputStream(image);                  //image.length(),返回文件的大小                  stmt.setBinaryStream(4, fis, (int) image.length());              } else {                  stmt.setBinaryStream(4, null, 0);              }              int count = stmt.executeUpdate();              if (count > 0) {                  return true;              } else {                  return false;              }          } catch (IOException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          } catch (SQLException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          } finally {              try {                  if (fis != null) {                      fis.close();                  }              } catch (IOException ex) {              }          }          return false;      }        public static boolean update(View view) {          FileInputStream fis = null;          try {              String sql = "update view set title= ? ,content= ? " + (view.getImageFile() != null ? (",picture= ? ") : " ") + "where catid= ? ";              PreparedStatement stmt = BaseDaoFactory.getInstance().prepareStatement(sql);              stmt.setString(1, view.getTitle());              stmt.setString(2, view.getContent());                if (view.getImageFile() != null) {                  stmt.setInt(4, view.getCatId());                  File image = new File(view.getImageFile());                  fis = new FileInputStream(image);                  //image.length(),返回文件的大小                  stmt.setBinaryStream(3, fis, (int) image.length());              } else {                  stmt.setInt(3, view.getCatId());              }                int count = stmt.executeUpdate();              if (count > 0) {                  return true;              } else {                  return false;              }          } catch (IOException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          } catch (SQLException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          } finally {              try {                  if (fis != null) {                      fis.close();                  }              } catch (IOException ex) {              }          }          return false;      }        public static boolean exit(Integer catId) {          try {              String sql2 = "SELECT title, content, picture FROM view where catid=? limit 1";              PreparedStatement stmt2 = BaseDaoFactory.getInstance().prepareStatement(sql2);              stmt2.setInt(1, catId);              ResultSet resultSet = stmt2.executeQuery();              while (resultSet.next()) {                  return true;              }          } catch (SQLException ex) {              Logger.getLogger(ViewPointDao.class.getName()).log(Level.SEVERE, null, ex);          }          return false;      }  }
bean:
import java.awt.Image;    public class View {        /**       * 景点标题       */      private String title;      /**       * 景点内容       */      private String content;      /**       * 景点图片       */      private Image image;            /**       * 景点图片上传路径       */      private String imageFile;            /**       * 分类id       */      private int catId;        public int getCatId() {          return catId;      }        public void setCatId(int catId) {          this.catId = catId;      }        public String getContent() {          return content;      }        public void setContent(String content) {          this.content = content;      }        public Image getImage() {          return image;      }        public void setImage(Image image) {          this.image = image;      }        public String getTitle() {          return title;      }        public void setTitle(String title) {          this.title = title;      }        public String getImageFile() {          return imageFile;      }        public void setImageFile(String imageFile) {          this.imageFile = imageFile;      }  }
转自:http://blog.csdn.net/zhongweijian/article/details/7668930