Home > Database > Mysql Tutorial > body text

往MySQL中存储图片_MySQL

WBOY
Release: 2016-06-01 13:06:14
Original
1195 people have browsed it

1.创建数据库:

CREATE TABLE    photo    (        id INT NOT NULL AUTO_INCREMENT,        name VARCHAR(100),        photo MediumBlob,        PRIMARY KEY (id)    )    ENGINE=InnoDB DEFAULT CHARSET=utf8;/*MySQL的四种BLOB类型类型 大小(单位:字节)TinyBlob 最大 255Blob 最大 65KMediumBlob 最大 16MLongBlob 最大 4G*/
Copy after login

2.新建包名com.sk.util,新建ImageUtil类,如下:

package com.sk.util;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;public class ImageUtil {    private static File file = null;    /**     * 从本地文件读取图像的二进制流     *      * @param infile     * @return     */    public static FileInputStream getImageByte(String infile) {        FileInputStream imageByte = null;        file = new File(infile);        try {            imageByte = new FileInputStream(file);        } catch (FileNotFoundException e) {            e.printStackTrace();        }        return imageByte;    }    /**     * 将图片流读出为图片     *      * @param inputStream     * @param path     */    public static void readBlob(InputStream inputStream, String path) {        try {            FileOutputStream fileOutputStream = new FileOutputStream(path);            byte[] buffer = new byte[1024];            int len = 0;            while ((len = inputStream.read(buffer)) != -1) {                fileOutputStream.write(buffer, 0, len);            }            inputStream.close();            fileOutputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}
Copy after login

3.新建包名com.sk.handle,新建WriteImage类,如下:

package com.sk.handle;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import com.sk.util.ImageUtil;public class WriteImage {	public static void main(String[] args) {		try {			Class.forName("com.mysql.jdbc.Driver").newInstance();		} catch (InstantiationException e) {			e.printStackTrace();		} catch (IllegalAccessException e) {			e.printStackTrace();		} catch (ClassNotFoundException e) {			e.printStackTrace();		}		String user = "root";		String password = "root";		String url = "jdbc:mysql://localhost:3306/oa?characterEncoding=utf-8";		Connection connection = null;		try {			connection = DriverManager.getConnection(url, user, password);		} catch (SQLException e) {			e.printStackTrace();		}		PreparedStatement preparedStatement = null;		InputStream inputStream = null;		inputStream = ImageUtil.getImageByte("D://工作//图片//5.jpg");		try {			String sql = "insert into photo(id,name,photo) values(?,?,?)";			preparedStatement = connection.prepareStatement(sql);			preparedStatement.setInt(1, 1);			preparedStatement.setString(2, "前言");			preparedStatement.setBinaryStream(3, inputStream,					inputStream.available());			preparedStatement.execute();		} catch (SQLException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		} finally {			try {				if (inputStream != null)					inputStream.close();			} catch (IOException e) {				e.printStackTrace();			} finally {				try {					if (preparedStatement != null)						preparedStatement.close();				} catch (SQLException e) {					e.printStackTrace();				} finally {					try {						connection.close();					} catch (SQLException e) {						e.printStackTrace();					}				}			}		}	}}
Copy after login

4.在新建ReadImage类,如下:

package com.sk.handle;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.sk.util.ImageUtil;public class ReadImage {	public static void main(String[] args) {		try {			Class.forName("com.mysql.jdbc.Driver").newInstance();		} catch (InstantiationException e) {			e.printStackTrace();		} catch (IllegalAccessException e) {			e.printStackTrace();		} catch (ClassNotFoundException e) {			e.printStackTrace();		}		String user = "root";		String password = "root";		String url = "jdbc:mysql://localhost:3306/oa?characterEncoding=utf-8";		Connection connection = null;		try {			connection = DriverManager.getConnection(url, user, password);		} catch (SQLException e) {			e.printStackTrace();		}		Statement statement = null;		ResultSet resultSet = null;		InputStream inputStream = null;		try {			statement = connection.createStatement();			String sql = "select p.photo from photo p where id = 1";			resultSet = statement.executeQuery(sql);			resultSet.next();			inputStream = resultSet.getBinaryStream("photo");			ImageUtil.readBlob(inputStream, "D://1.png");		} catch (SQLException e) {			e.printStackTrace();		} finally {			try {				if (inputStream != null)					inputStream.close();			} catch (IOException e) {				e.printStackTrace();			} finally {				try {					if (resultSet != null)						resultSet.close();				} catch (SQLException e) {					e.printStackTrace();				} finally {					if (statement != null)						if (statement != null)							try {								statement.close();							} catch (SQLException e) {								e.printStackTrace();							} finally {								if (connection != null)									try {										connection.close();									} catch (SQLException e) {										e.printStackTrace();									}							}				}			}		}	}}
Copy after login

5.图片路径要修改。

 

爱生活,爱分享,爱康宝!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!