怎么将图片添加到mysql中

怎么将图片添加到mysql中,第1张

概述怎么将图片添加到mysql中

将图片添加到MysqL中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。

推荐:《mysql视频教程》

正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进MysqL数据库

如果要图片存进数据库 要将图片转化成二进制。

1.数据库存储图片的字段类型要为blob二进制大对象类型

2.将图片流转化为二进制

下面放上代码实例

一、数据库

CREATE table `photo` (  `ID` int(11) NOT NulL,  `name` varchar(255) DEFAulT NulL,  `photo` blob,  PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAulT CHARSET=utf8;

二、数据库链接

/** *  */package JdbcimgTest;import java.sql.Connection;import java.sql.DriverManager;import java.sql.sqlException;/** * @author administrator *  */public class DBUtil{    // 定义数据库连接参数    public static final String DRIVER_CLASS_name = "com.MysqL.jdbc.Driver";        public static final String URL = "jdbc:MysqL://localhost:3306/test";        public static final String USERname = "root";        public static final String PASSWORD = "root";        // 注册数据库驱动    static    {        try        {            Class.forname(DRIVER_CLASS_name);        }        catch (ClassNotFoundException e)        {            System.out.println("注册失败!");            e.printstacktrace();        }    }        // 获取连接    public static Connection getConn() throws sqlException    {        return DriverManager.getConnection(URL, USERname, PASSWORD);    }        // 关闭连接    public static voID closeConn(Connection conn)    {        if (null != conn)        {            try            {                conn.close();            }            catch (sqlException e)            {                System.out.println("关闭连接失败!");                e.printstacktrace();            }        }    }        //测试/*    public static voID main(String[] args) throws sqlException    {        System.out.println(DBUtil.getConn());    }    */}

三、图片流

package JdbcimgTest;import java.io.file;import java.io.fileinputStream;import java.io.fileOutputStream;import java.io.IOException;import java.io.inputStream;/** * @author administrator *  */public class ImageUtil{        // 读取本地图片获取输入流    public static fileinputStream readImage(String path) throws IOException    {        return new fileinputStream(new file(path));    }        // 读取表中图片获取输出流    public static voID readBin2Image(inputStream in, String targetPath)    {        file file = new file(targetPath);        String path = targetPath.substring(0, targetPath.lastIndexOf("/"));        if (!file.exists())        {            new file(path).mkdir();        }        fileOutputStream fos = null;        try        {            fos = new fileOutputStream(file);            int len = 0;            byte[] buf = new byte[1024];            while ((len = in.read(buf)) != -1)            {                fos.write(buf, 0, len);            }            fos.flush();        }        catch (Exception e)        {            e.printstacktrace();        }        finally        {            if (null != fos)            {                try                {                    fos.close();                }                catch (IOException e)                {                    e.printstacktrace();                }            }        }    }}

四、转码存储

package JdbcimgTest;import java.io.fileinputStream;import java.io.inputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.sqlException;/** * @author administrator 测试写入数据库以及从数据库中读取 */public class ImageDemo{        // 将图片插入数据库    public static voID readImage2DB()    {        String path = "D:/Eclipse/eclipseWorkspace/TestProject/img/mogen.jpg";        Connection conn = null;        PreparedStatement ps = null;        fileinputStream in = null;        try        {            in = ImageUtil.readImage(path);            conn = DBUtil.getConn();            String sql = "insert into photo (ID,name,photo)values(?,?,?)";            ps = conn.prepareStatement(sql);            ps.setInt(1, 1);            ps.setString(2, "Tom");            ps.setBinaryStream(3, in, in.available());            int count = ps.executeUpdate();            if (count > 0)            {                System.out.println("插入成功!");            }            else            {                System.out.println("插入失败!");            }        }        catch (Exception e)        {            e.printstacktrace();        }        finally        {            DBUtil.closeConn(conn);            if (null != ps)            {                try                {                    ps.close();                }                catch (sqlException e)                {                    e.printstacktrace();                }            }        }            }        // 读取数据库中图片    public static voID readDB2Image()    {        String targetPath = "C:/Users/Jia/Desktop/mogen.jpg";        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        try        {            conn = DBUtil.getConn();            String sql = "select * from photo where ID =?";            ps = conn.prepareStatement(sql);            ps.setInt(1, 1);            rs = ps.executequery();            while (rs.next())            {                inputStream in = rs.getBinaryStream("photo");                ImageUtil.readBin2Image(in, targetPath);            }        }        catch (Exception e)        {            e.printstacktrace();        }        finally        {            DBUtil.closeConn(conn);            if (rs != null)            {                try                {                    rs.close();                }                catch (sqlException e)                {                    e.printstacktrace();                }            }            if (ps != null)            {                try                {                    ps.close();                }                catch (sqlException e)                {                    e.printstacktrace();                }            }                    }    }        //测试    public static voID main(String[] args)    {        //readImage2DB();        readDB2Image();    }}
总结

以上是内存溢出为你收集整理的怎么将图片添加到mysql中全部内容,希望文章能够帮你解决怎么将图片添加到mysql中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1150658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存