将MySql InputStream转换为byte []

时间:2017-12-24 09:34:30

标签: java mysql inputstream

我使用

将一些图像存储在MySQL数据库中
ps.setBinaryStream(1, photo);

其中photoInputStream

当我从数据库中读取图像时,我需要将其转换为byte[]。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

        File file=new File("E:\\image1.png");
        FileOutputStream fos=new FileOutputStream(file);
        byte b[];
        Blob blob;

        PreparedStatement ps=con.prepareStatement("select * from image_table"); 
        ResultSet rs=ps.executeQuery();

        while(rs.next()){
            blob=rs.getBlob("image");
            b=blob.getBytes(1,(int)blob.length());
            fos.write(b);
        }

Blob类型的最大长度为64kb。请使用较大类型,例如mediumbloblongblob

您还可以使用以下方式检索: inputStream imgStream = resultSet.getBinaryStream(1); 使用InputStream

存储图像时

答案 1 :(得分:1)

您需要做的就是声明和结果集。这样的事情:

Statement myStatement=(Statement) myConnection.createStatement();
ResultSet myRS=myStatement.executeQuery(mySQLstring);
byte[] photo = myRS.getBytes("myphotoColumnLabel");