Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java netbeans中显示从ms access到jpanel的映像_Java_Jdbc - Fatal编程技术网

如何在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就是这样存储数据的。这就像当你有一列来存储文本时,它使用的是“文本”。“长二进制数据”和“二进制大对象”基本上都是一样的好吧,现在我明白了,但我试了很多,想在标签上显示它…我给了维度也来显示它,我也使用了缓冲区和字节技巧…但有件事我不明白,我在任务的最后一点帮我做,我只想在标签上显示带有员工详细信息的图像