jTable + PostgreSQL (IntelliJ idea)

Не получается вывести из базы данных PostgeSQL в JTable.

В БД имею следующее:

  id serial primary key ,
  name varchar(28) not null ,
  address varchar(128) not null ,
  gender varchar(28) not null ,
  knowledge varchar(50) not null ,
  subject varchar(50) not null

Создаю класс User, конструктор, геттеры...

public class User {
    private int id;
    private String name;
    private String address;
    private String gender;
    private String knowledge;
    private String subject;

    public User(int id, String name, String address, String gender, String knowledge, String subject) {
        this.id = id;
        this.name = name;
        this.address = address;
        this.gender = gender;
        this.knowledge = knowledge;
        this.subject = subject;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public String getGender() {
        return gender;
    }

    public String getKnowledge() {
        return knowledge;
    }

    public String getSubject() {
        return subject;
    }
}

Тут самое основное окно, где нужно вывести в jtable из базы DateBase.java код:

import util.ConnectionManager;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class DateBase extends JDialog {
    private JPanel contentPane;
    private JButton saveBtn;
    private JButton buttonCancel;
    private JTextField address;
    private JTextField name;
    private JRadioButton male;
    private JRadioButton female;
    private JCheckBox coreJava;
    private JCheckBox python;
    private JComboBox subject;
    private JTable userTable; //вот сюда вывести данные из базы

    public ArrayList<User> userList() {
        ArrayList<User> usersList = new ArrayList<>();
        String sql1 = """
                select * from usersindean;
                """;
        try (var connection = ConnectionManager.open()) {
            Statement st = connection.createStatement();
            ResultSet rs = st.executeQuery(sql1);
            User user;
            while (rs.next()) {
                user = new User(rs.getInt("id"), rs.getString("name"),
                        rs.getString("address"), rs.getString("gender"),
                        rs.getString("knowledge"), rs.getString("subject"));
                usersList.add(user);
            }

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
        return usersList;
    }

    public void show_user() {
        ArrayList<User> list = userList();
        DefaultTableModel model = (DefaultTableModel) userTable.getModel();
        Object[] row = new Object[6];
        for (int i = 0; i < list.size(); i++) {
            row[0] = list.get(i).getId();
            row[1] = list.get(i).getName();
            row[2] = list.get(i).getAddress();
            row[3] = list.get(i).getGender();
            row[4] = list.get(i).getKnowledge();
            row[5] = list.get(i).getSubject();
            model.addRow(row);
        }
    }


    public DateBase() {
        setContentPane(contentPane);
        setModal(true);
        getRootPane().setDefaultButton(saveBtn);
        this.setLocationRelativeTo(null); // по центру экрана
        show_user();

        saveBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onOK();
            }
        });

        buttonCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onCancel();
            }
        });

        // call onCancel() when cross is clicked
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                onCancel();
            }
        });

        // call onCancel() on ESCAPE
        contentPane.registerKeyboardAction(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onCancel();
            }
        }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    }

    private void onOK() {
*****
тут добавление нового пользователя, все работает
*****
    }

    private void onCancel() {
        // add your code here if necessary
        dispose();
    }

    public static void main(String[] args) {

        DateBase dialog = new DateBase();
        dialog.pack();
        dialog.setVisible(true);
        System.exit(0);

    }
}

В результате в jTable userTable не выводятся данные: введите сюда описание изображения

Прошу помочь, пересмотрел видео в ютубе, где индусы рассказывают и показывают, но все равно таблица пустая остается. Очень нужна ваша помощь...


Ответы (0 шт):