У меня есть JTable, и я заполняю таблицу следующим образом:
jTable_Std_info.setModel(DBControler.getALLStudents());
И ниже приведен статический метод в классе DBControler, который извлекает все данные из базы данных (Oracle).
public static DefaultTableModel getALLStudents() throws SQLException, Exception {
DefaultTableModel tableModel = new DefaultTableModel();
Vector rows = new Vector();
Vector columns = new Vector();
try {
conn = geConnection();
cst = conn.prepareCall("{? = call std_getInfoFunc}");
cst.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cst.execute();
res = (ResultSet) cst.getObject(1);
System.out.print(res);
ResultSetMetaData rsm = res.getMetaData();
for (int i = 1; i <= rsm.getColumnCount(); i++) {
columns.addElement(rsm.getColumnName(i));
}
int row = 0;
while (res.next()) {
Vector vRow = new Vector(); //to store the current row
//System.out.println("Row " +row+"\n");
for (int i = 1; i <= rsm.getColumnCount(); i++) {
String columnValue = res.getString(i);
vRow.addElement(columnValue);
}
row += 1;
rows.addElement(vRow);
}
tableModel.setDataVector(rows, columns);
} catch (SQLException e) {
e.printStackTrace();
} finally {
res.close();
conn.close();
}
return tableModel;
}
Пока все работает нормально, но проблема в том, что если я вставлю новую запись в базу данных, JTable не получит вновь вставленную строку / данные.Почему это так и как я могу решить эту проблему?
ОБНОВЛЕНИЕ: Это получение данных, когда я фиксирую мою новую вставку.Так я должен фиксировать каждый раз, когда я обновляю?Или есть другие способы сделать это?