gpt4 book ai didi

java - 如何在java netbeans中显示从ms access到jpanel的图像

转载 作者:行者123 更新时间:2023-12-02 00:06:10 26 4
gpt4 key购买 nike

我使用的代码:

private void okActionPerformed(java.awt.event.ActionEvent evt)        
{
try {
String Update = name.getText();

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection = DriverManager.getConnection("jdbc:odbc:NewPData");
PreparedStatement psmnt = connection.prepareStatement("SELECT Image FROM Table1 where Name='" + Update + "'");
ResultSet rs = psmnt.executeQuery();
Blob blob = rs.getBlob("Image");
int b;
InputStream bis = rs.getBinaryStream("Image");

FileOutputStream f = new FileOutputStream("Image.jpg");
while ((b = bis.read()) >= 0) {
f.write(b);
}
f.close();
bis.close();

icon = new ImageIcon(blob.getBytes(1L, (int) blob.length()));

lblImage.setIcon(icon);

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

异常显示:

       java.lang.UnsupportedOperationException

我首先将图像存储在 ms access 中,现在我想将其显示在标签上。请帮忙。

最佳答案

这部分代码没有意义。

Blob blob = rs.getBlob("Image");
int b;
InputStream bis = rs.getBinaryStream("Image");

FileOutputStream f = new FileOutputStream("Image.jpg");
while ((b = bis.read()) >= 0) {
f.write(b);
}
f.close();
bis.close();

icon = new ImageIcon(blob.getBytes(1L, (int) blob.length()));

您基本上将 BLOB 从结果集中读取到文件中,然后尝试再次读取它以构建图像。您可能已耗尽该流。

为什么不直接读取图像呢?

icon = new ImageIcon("Image.jpg");

更好的是,为什么不利用 ImageIO API 直接读取流,而无需写出临时文件?

BufferedImage image = ImageIO.read(bis); 
icon = image == null ? null : new ImageIcon(image);

关于java - 如何在java netbeans中显示从ms access到jpanel的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com