向MySQL 中存储二进制数据文件

package cn.itcast.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itcast.utils.JdbcUtils;

public class Demo2 {

    /**
     
     create table testblob
     (
         id int primary key auto_increment,
         image longblob
     );
     
     */
    
    //向 Mysql数据库中存储二进制文件
    @Test
    public void add(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "insert into testblob(image) values(?)";
            st = conn.prepareStatement(sql);
            String path = Demo2.class.getClassLoader().getResource("01.jpg").getPath();
            st.setBinaryStream(1, new FileInputStream(path), (int) new File(path).length());
            int num = st.executeUpdate();
            if(num>0){
                System.out.println("插入成功!!");
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }
    
    @Test
    public void read(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "select image from testblob where id=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, 1);
            rs = st.executeQuery();
            if(rs.next()){
                InputStream in = rs.getBinaryStream("image");
                int len = 0;
                byte buffer[] = new byte[1024];
                
                FileOutputStream out = new FileOutputStream("c:\\1.jpg");
                while((len=in.read(buffer))>0){
                    out.write(buffer,0, len);
                }
                in.close();
                out.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }

}
package cn.itcast.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itcast.utils.JdbcUtils;

public class Demo2 {

    /**
     
     create table testblob
     (
         id int primary key auto_increment,
         image longblob
     );
     
     */
    
    //向 Mysql数据库中存储二进制文件
    @Test
    public void add(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "insert into testblob(image) values(?)";
            st = conn.prepareStatement(sql);
            String path = Demo2.class.getClassLoader().getResource("01.jpg").getPath();
            st.setBinaryStream(1, new FileInputStream(path), (int) new File(path).length());
            int num = st.executeUpdate();
            if(num>0){
                System.out.println("插入成功!!");
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }
    
    @Test
    public void read(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "select image from testblob where id=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, 1);
            rs = st.executeQuery();
            if(rs.next()){
                InputStream in = rs.getBinaryStream("image");
                int len = 0;
                byte buffer[] = new byte[1024];
                
                FileOutputStream out = new FileOutputStream("c:\\1.jpg");
                while((len=in.read(buffer))>0){
                    out.write(buffer,0, len);
                }
                in.close();
                out.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }

}

 

posted @ 2013-07-08 21:00  亂舞春秋  阅读(1561)  评论(0编辑  收藏  举报