如何在MySQL中将图像从数据库显示到Java的jTable中?

问题描述 投票:0回答:1

在我正在研究的项目中,有showStudents.java,它使我能够在jTable swing组件中查看数据库中的所有学生。 jTable正确显示,但图像显示为

    5   Debebe  Gemesa  2020-02-07  Adama       AB  0956852145  1   [B@522d8811
    6   Samuel  Gemeda  2020-02-05  Bahir Dar   A+  0986451278  1   [B@3330a9d5

最后一栏应该是图片栏。在数据库中,学生表具有以下值

6 Samuel Gemeda 2020-02-05 Bahir Dar A+ 0986451278 1 [BLOB - 32 B]

我的showStudents.java中具有此方法,使我能够查看数据库中的所有列。

public void showRecord(){
    try {
        stmt = conn.createStatement();
        String sql = "SELECT * FROM STUDENT";
        ResultSet rs = stmt.executeQuery(sql);
        jTable1.setModel(DbUtils.resultSetToTableModel(rs));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}
java mysql swing jdbc
1个回答
0
投票

如果要使用DbUtils,则需要使用自定义渲染器来显示数据。也就是说,您需要将Blob转换为ImageIcon,然后将Icon添加到JLabel。每次呈现表的单元格时都会进行此转换,效率不是很高。

阅读Swing教程的How to Use Renderers部分,以获取更多信息和入门示例。

或另一种方法是不使用DbUtils。相反,您自己将数据从数据库读取到DefaultTableModel中。这种方法的优点是,一次创建ImageIcon,在加载数据时,然后使用JTable的默认Icon渲染器显示图标。

请参见:How to get a DefaultTableModel object's data into a subclass of DefaultTableModel以将数据直接读入表模型的示例。

您需要修改代码以将Blob转换为最后一列的ImageIcon

© www.soinside.com 2019 - 2024. All rights reserved.