我有一個JTable,我populte表如下: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沒有得到新插入的行/數據。爲什麼是這樣以及如何解決這個問題?
更新: 它提交我的新插入時檢索數據。那麼每次更新時都必須提交?或者還有其他方法可以做到這一點嗎?
兩個或三個similair API根據到你的實現中,每當你在數據庫中添加一行時,你都需要創建一個新的表模型。在數據庫中添加一行後,您是否再次調用'getALLStudents()'? –
我是java中的初學者,所以我不瞭解Java中的很多功能。有沒有其他方法可以更新行而不是創建新的表格模型? – Sas