java操作Mysql数据库中的Blob二进制数据

1 Mysql表结构
在这里插入图片描述
2 写入数据到mysql中的photo的mediumblob字段中
(注意:由于是演示代码,里面的异常处理,和关闭资源都做了最简单的方式,开发中需要进行相应处理。)
(1)连接数据库代码

 public static Connection getConnection() throws Exception {
        Connection conn = null;
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(is);
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driverClass");
        Class.forName(driver);
        conn= DriverManager.getConnection(url,user,password);
        return conn;
    }

由于是读取的属性文件的配置信息
在这里插入图片描述
(2)这个测试方法可以通过main()主方法也可以通过junit进行测试运行

把资源文件写入到数据库Blob中

  public void test8()throws Exception{//写入数据,包含Blob类型
        String sql="insert into customer(cus_name,cus_email,cus_birth,photo)values(?,?,?,?)";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date date=sdf.parse("2019-12-22");
        Connection conn=JDBCUtils.getConnection();
        PreparedStatement pstm=conn.prepareStatement(sql);
           pstm.setObject(1,"zhang");
           pstm.setObject(2,"aassdd@qq.com");
           pstm.setDate(3,new java.sql.Date(date.getTime()));
        InputStream is=new FileInputStream("2019年12月17日.jpg");
        pstm.setBlob(4,is);
        pstm.executeUpdate();
    }

写入到数据库中了
在这里插入图片描述
在这里插入图片描述

下面这个是从数据库Blob中读取二进制文件到本地

public void test9() throws Exception {//查询数据,包括Blob二进制。
        String sql = "select  cus_id,cus_name,cus_email,cus_birth,photo from customer where cus_id=?";
        Connection conn = JDBCUtils.getConnection();
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, 5);
        InputStream fis = null;
        ResultSet rs = pstm.executeQuery();
        if (rs.next()) {
            System.out.print(rs.getInt("cus_id") + "\t");
            System.out.print(rs.getString("cus_name") + "\t");
            System.out.print(rs.getString("cus_email") + "\t");
            Blob b = rs.getBlob("photo");
            fis = b.getBinaryStream();
        }
        FileOutputStream fos = new FileOutputStream("zzhangg.jpg");
        byte[] buff = new byte[1024];
        int len;
        while ((len = fis.read(buff)) != -1) {
            fos.write(buff, 0, len);
        }
        fos.flush();
        fos.close();
    }

相信懂得一些IO和JDBC操作的猿猴,使用以上代码不会有任何问题的。
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值