我使用
将一些图像存储在MySQL数据库中ps.setBinaryStream(1, photo);
其中photo
是InputStream
。
当我从数据库中读取图像时,我需要将其转换为byte[]
。我怎么能这样做?
答案 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
。请使用较大类型,例如mediumblob
或longblob
。
您还可以使用以下方式检索:
inputStream imgStream = resultSet.getBinaryStream(1);
使用InputStream
答案 1 :(得分:1)
您需要做的就是声明和结果集。这样的事情:
Statement myStatement=(Statement) myConnection.createStatement();
ResultSet myRS=myStatement.executeQuery(mySQLstring);
byte[] photo = myRS.getBytes("myphotoColumnLabel");