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

来源:互联网 发布:基于算法的漏洞排查 编辑:程序博客网 时间:2024/05/15 01:06

表结构:

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