Петля возвращает только первую строку

66
5

Я пытаюсь загрузить результаты базы данных в jtable, но когда я запускаю код, он отображает только первую строку, а затем ошибки исключение, которое не было найдено. Вот мой код;

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "C:\\Users\\PMatope.FMBMW.000\\Documents\\Library.accdb";
conn = DriverManager.getConnection(url, "", "");

st = conn.createStatement();

ResultSet rs = st.executeQuery("SELECT ID,full_name,sex,course,contact,email FROM Person");
ResultSetMetaData data = rs.getMetaData();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
// jTable1.setModel(model);

while (rs.next()) {

String id,fname,sex,course,contact,email;
id = rs.getString("ID");
fname = rs.getString("full_name");
sex = rs.getString("sex");
course = rs.getString("course");
contact = rs.getString("contact");
email = rs.getString("email");

model.addRow(new Object[] {id,fname,sex,course,contact,email});
model.fireTableDataChanged();
JOptionPane.showMessageDialog(null, rs.getString("sex"));
}

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Message: "+ e.getMessage());
}

спросил(а) 2020-04-04T01:14:24+03:00 3 месяца назад
1
Решение
100

Сначала объявите модель таблицы и создайте новый экземпляр для каждого цикла.

например. :

DefaultTableModel model = null;
// jTable1.setModel(model);

while (rs.next()) {

model = (DefaultTableModel) jTable1.getModel();

String id,fname,sex,course,contact,email;
id = rs.getString("ID");
fname = rs.getString("full_name");
sex = rs.getString("sex");
course = rs.getString("course");
contact = rs.getString("contact");
email = rs.getString("email");

model.addRow(new Object[] {id,fname,sex,course,contact,email});
model.fireTableDataChanged();
JOptionPane.showMessageDialog(null, rs.getString("sex"));
}

ответил(а) 2020-04-04T01:30:46.321845+03:00 3 месяца назад
39

Вам нужно инициализировать,

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

внутри цикла while

ответил(а) 2020-04-04T01:14:24+03:00 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема