首页 > 解决方案 > java - 如何将MySQL中数据库中的图像显示到java中的jTable中?

问题描述

在我正在进行的一个项目中,我有 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);
    }
}

标签: javamysqlswingjdbc

解决方案


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

阅读 Swing 教程中有关如何使用渲染器的部分,以获取更多信息和工作示例,以帮助您入门。

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

有关将数据直接读取到表模型中的示例,请参阅:如何将 DefaultTableModel 对象的数据获取到 DefaultTableModel 的子类中。

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


推荐阅读