【问题标题】:how to display image from database in MySQL into jTable in java?java - 如何将MySQL中数据库中的图像显示到java中的jTable中?
【发布时间】:2020-06-06 12:37:42
【问题描述】:

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

【问题讨论】:

  • 您必须将 blob 中的数据读入 Java 映像。
  • @NomadMaker 你能帮我做一些代码吗?
  • 不在评论中。谷歌“java 显示 jpg 图像”(或您拥有的任何类型的图像)。例子很多。
  • try { stmt = conn.createStatement(); String sql = "SELECT * FROM STUDENT"; ResultSet rs = stmt.executeQuery(sql); Blob aBlob = rs.getBlob("photo"); InputStream is = aBlob.getBinaryStream(0, aBlob.length()); BufferedImage imag=ImageIO.read(is); Image image = imag; ImageIcon icon =new ImageIcon(image); jLabel2.setIcon(icon); jTable1.setModel(DbUtils.resultSetToTableModel(rs)); } 但它显示的是java.sql.SQLException: Before start of the result set
  • 在结果集开始之前错误是在结果集上调用next() 之前调用getXXX 方法的结果。结果集最初位于结果集之前。另外,请edit您的问题提供详细信息,不要将它们添加到cmets中。

标签: java mysql swing jdbc


【解决方案1】:

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

阅读 How to Use Renderers 上的 Swing 教程部分,了解更多信息和工作示例,以帮助您入门。

或者另一种方法是不使用 DbUtils。相反,您自己将数据库中的数据读入DefaultTableModel。这种方法的优点是你创建了一次ImageIcon,当数据加载完毕后,你就可以使用JTable的默认Icon渲染器来显示Icon。

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

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

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 2014-04-18
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多