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 | |
+--------+-------------+------+-----+---------+-------+
*/