package com.mycompany.mysql.image;import java.io.*;import java.sql.*;public class Main { public static void main(String[] args) { Main m = new Main(); // m.storeImage(); m.getImage(); } private static String URL = "jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"; private static String USERNAME = "root"; private static String PASSSWORD = "wjb1234"; public void getImage() { Connection con = getConnection(); Statement st = null; ResultSet rs = null; InputStream in = null; OutputStream out = null; try { st = con.createStatement(); rs = st.executeQuery("select image from image where id=1"); rs.next(); //将光标指向第一行 //从rs中读取stupic放进InputStream对象中 in = rs.getBinaryStream("image"); //申明byte数组,用来存放图片流 byte[] b = new byte[40000]; in.read(b); //从InputStream对象中读取数据放进byte数组中 //实例化OutputStream对象,在D盘创建一个图片文件 out = new FileOutputStream("/home/zcwangjb/document/xml2.gif"); //将文件输出,内容则为byte数组里面的数据 out.write(b); out.flush(); } catch (SQLException e) { } catch (IOException e) { } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } try { //关闭相关连接 rs.close(); st.close(); con.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } public void storeImage() { //连接MySQl数据库 Connection con = getConnection(); PreparedStatement ps = null; InputStream in = null; try { //从本地硬盘读取一张读片 in = new FileInputStream("/home/zcwangjb/document/xml.gif"); System.out.println(in.available()); ps = con.prepareStatement("insert into image values(?,?,?)"); ps.setInt(1, 1); ps.setString(2, "Tom"); ps.setBinaryStream(3, in, in.available()); ps.executeUpdate(); } catch (IOException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { //关闭流 if (in != null) { in.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { //关闭相关连接 ps.close(); con.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } private static Connection getConnection() { Connection con = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(URL, USERNAME, PASSSWORD); } catch (SQLException ex) { //logger.error("database connection error ." + ex.getMessage()); } catch (ClassNotFoundException ex) { //logger.error("mysql jdbc driver cannot find ." + ex.getMessage()); } return con; }}/* ---------------表结构------------ 表名:image +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(4) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | | image | blob | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ */
Copier après la connexion