关于MySQL 中存取图片数据

MySQL中存取文件的重点在于图片在数据库中存储的数据类型,以及将数据读出来后的数据类型。

MySQL可以使用LONGBLOB或者BLOB类型存储,在java中可以使用byte[]类型来接数据。

下面是一个小测试,关于在本地的一个图片存到数据库中,让读出来放到本地。其中使用的是JDBC+MySQL:在MySQL中使用LONGBLOB存储图片。

@Test
    public void test06() throws SQLException, IOException {
        String SQL = "insert into test_image values ( ? , ? )" ;
        PreparedStatement preparedStatement = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);

        preparedStatement.setInt( 1 , 1);
        File file = new File("C:\\Users\\Administrator\\Pictures\\Camera Roll\\下载.png");
        FileInputStream fileInputStream = new FileInputStream(file);
        byte[] bytes = fileInputStream.readAllBytes();
        preparedStatement.setObject(2, bytes,JDBCType.BLOB);

        // execute 系列方法 ( 包括 批量更新 ) 都来自于 Statement 接口 。
        int i = preparedStatement.executeUpdate();
        System.out.println( i );


        preparedStatement.close();
    }
    @Test
    public void test07() throws SQLException, IOException {
        String SQL = "select image from test_image where id = ?" ;
        PreparedStatement preparedStatement = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);

        preparedStatement.setInt( 1 , 1);
        // execute 系列方法 ( 包括 批量更新 ) 都来自于 Statement 接口 。
        ResultSet resultSet = preparedStatement.executeQuery();
        resultSet.next();
        byte[] bytes = resultSet.getBytes(1);
        OutputStream os = new FileOutputStream("C:\\Users\\Administrator\\Pictures\\Camera Roll\\下载2.png");
        os.write(bytes, 0, bytes.length);
        os.flush();
        os.close();
        preparedStatement.close();
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值