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 не выводятся данные:

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