12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-11-29 09:53:20
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
将图片添加到mysql中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。正常的图片储存要么放进本地磁
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
将图片添加到mysql中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。
正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进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();}}
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19