小编给大家分享一下将图片添加到mysql中的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
将图片添加到MysqL中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。
正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进MysqL数据库
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中的方法有了一定的了解,想了解更多相关知识,欢迎关注编程之家行业资讯频道,感谢各位的阅读!