Как отобразить изображение из базы данных в MySQL в jTable в java? - PullRequest
0 голосов
/ 22 февраля 2020

В проекте, над которым я работаю, у меня есть 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);
    }
}

1 Ответ

0 голосов
/ 22 февраля 2020

Если вы хотите использовать DbUtils, вам нужно будет использовать пользовательский рендерер для отображения данных. То есть вам нужно будет преобразовать Blob в ImageIcon и добавить Icon в JLabel. Это преобразование будет выполняться каждый раз при визуализации ячейки таблицы, что не очень эффективно.

Прочтите раздел из учебника Swing по Как использовать средства визуализации для получения дополнительной информации и рабочих примеров. чтобы начать.

Или другой подход - НЕ использовать DbUtils. Вместо этого вы сами читаете данные из базы данных в DefaultTableModel. Преимущество этого подхода заключается в том, что вы создаете ImageIcon один раз, когда данные загружаются, затем вы используете средство визуализации Icon по умолчанию JTable для отображения значка.

См .: Как чтобы получить данные объекта DefaultTableModel в подкласс DefaultTableModel для примера чтения данных непосредственно в табличную модель.

Вам потребуется изменить код для преобразования BLOB-объекта в ImageIcon для ваш последний столбец.

...