将图片添加到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中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)