zoukankan      html  css  js  c++  java
  • mysql blob字段存储图片操作示例

    表结构:

    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;
        }
    }
    


  • 相关阅读:
    数据表管理admin
    HDU 5057
    HDU 5056
    HDU 6035(树形dp)
    CodeForces 586D
    Codeforces 940D
    CodeForces 820C
    TOJ4114(活用树状数组)
    2017CCPC中南地区赛 H题(最长路)
    CodeForces 544C (Writing Code)(dp,完全背包)
  • 原文地址:https://www.cnblogs.com/secbook/p/2655163.html
Copyright © 2011-2022 走看看