如何在java netbeans中显示从ms access到jpanel的映像
我使用的代码是:如何在java netbeans中显示从ms access到jpanel的映像,java,jdbc,Java,Jdbc,我使用的代码是: private void okActionPerformed(java.awt.event.ActionEvent evt) { try { String Update = name.getText(); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection connecti
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);
这段代码没有意义
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);
再多一点关于错误的信息会很有用,比如它出现在哪里?再多一点关于错误的信息会很有用,比如它出现在哪里?Image是我在ms access中的列名。我不明白为什么它总是保存名为“Long Binary Data”的图像而不是图像名??我不明白,这是什么意思“保存名为“长二进制数据”的图像?在“我的图像”列中,为什么图像的名称在我存储它们时显示长二进制数据?因为Access就是这样存储数据的。就像有一列存储文本时,它使用“文本”。“长二进制数据”和“二进制大对象”"基本上都是一样的好了,现在我明白了,但是我试了很多在标签上显示它…我也给了维度来显示它,我也使用了缓冲区和字节技巧…但是有件事我不明白,我在我的任务的最后一点帮我做,我只想在labelImage上显示带有员工详细信息的图像是我在ms access中的列名…我不明白为什么它总是保存名为“Long Binary Data”的图像而不是图像名称??我不明白,“保存名为“Long Binary Data”的图像是什么意思?在我的图像列中,为什么图像名称在我存储它们时显示长二进制数据??因为Access就是这样存储数据的。这就像当你有一列来存储文本时,它使用的是“文本”。“长二进制数据”和“二进制大对象”基本上都是一样的好吧,现在我明白了,但我试了很多,想在标签上显示它…我给了维度也来显示它,我也使用了缓冲区和字节技巧…但有件事我不明白,我在任务的最后一点帮我做,我只想在标签上显示带有员工详细信息的图像