测试数据库存储文件的方式

mysql.jar底层没有重写PreparedStatement的setBlob(index, InputStream)##

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



/**
 * 
 */

/**
 * @author 17503
 *
 */
public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //insert(new File("H:\\Tools\\TestXML\\4.xml"));
        readAndWrite();
    }
    
    public static void readAndWrite() {

        try(OutputStream os = new FileOutputStream("H:\\4.xml")){
            Connection con = conn();
            PreparedStatement pst = 
                    con.prepareStatement("select img.img from img where id=1");
            ResultSet rs = pst.executeQuery();
            rs.next();
            byte[] data = rs.getBytes(1);
            os.write(data);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void insert(File file) {
        
        try(InputStream is = new FileInputStream(file);){
            Connection con = conn();
            System.out.println(con);
            System.out.println(file.isFile());
            byte[] data = new byte[(int)file.length()];
            is.read(data);
            
            PreparedStatement pst = 
                    con.prepareStatement("insert into img values('1',?)");
            pst.setBytes(1, data);
        
            //pst.setBlob(1, is);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static Connection conn() throws Exception {
        
        try {
            return DriverManager.getConnection("jdbc:mysql:///test", "root", "etoak");
        } catch (SQLException e) {
            e.printStackTrace();
            throw new Exception("losing Connection..");
        }
    }
    static{
        try{
            Class.forName("com.mysql.jdbc.Driver");
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,996评论 18 399
  • 本人的环境为Myeclipse10、MySQL5.7.15 本文包括:简介JDBC编程步骤打通数据库程序详解—Dr...
    廖少少阅读 9,628评论 7 39
  • 前几天给父亲打电话得知他已经感冒几天,最近流感严重,不放心,决定回家看看。 早上定好了高铁票,我提早一个小时出门,...
    fy晨曦阅读 1,306评论 0 0
  • 霁朝岩主人阅读 1,031评论 0 0
  • 前几天爸爸给我寄了一箱家里的橙子,大概30多斤,邮费花了50块。无奈赶上双十一的尾巴,乡镇来的快递速度太慢...
    amao327阅读 4,716评论 0 5

友情链接更多精彩内容