java(275)jdbc_blob二进制大对象的使用

我们把一张图片存到mysql数据库中,然后再读出来存放到指定的硬盘上

代码如下

package com.imust.jdbc;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 测试大文本数据 blob
 * @author  Zachary (为上帝所心仪的人)
 * @date    2017年10月2日
 * @project 测试jdbc
 * @package com.imust.jdbc
 */
public class Demo10 {

    public static void main(String[] args) throws Exception {

            Connection conn = null;
            java.sql.PreparedStatement pstl = null;
            ResultSet rs = null;
            Reader r = null;
            InputStream is  = null;
            OutputStream os = null;
            try {
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc", "root", "zzf540266546");
                    /*String sql = "insert into t_user (username,myInfo) values(?,?)";
                    pstl = conn.prepareStatement(sql);
                    pstl.setString(1, "高淇");
                    pstl.setBlob(2, new FileInputStream("d:/icon.jpg"));
                    pstl.execute();*/

                    String sql = "select * from t_user where id = ?";
                    pstl.setObject(1, 101026);
                    rs = pstl.executeQuery();
                    while(rs.next()){
                        Blob b = rs.getBlob("headImg");
                        is = b.getBinaryStream();
                        os = new FileOutputStream("d:/a.jpg");
                        int temp = 0;
                        while((temp = is.read())!= -1){
                            os.write(temp);
                        }
                    }

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }


            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{

                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(pstl != null){
                    pstl.close();
                }
                if(rs != null){
                    rs.close();
                }
                is.close();
                os.close();
            }

    }
}

你可能感兴趣的:(jdbc)