JTable не показывает недавно вставленную строку / данные - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть 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 не получит вновь вставленную строку / данные.Почему это так и как я могу решить эту проблему?

ОБНОВЛЕНИЕ: Это получение данных, когда я фиксирую мою новую вставку.Так я должен фиксировать каждый раз, когда я обновляю?Или есть другие способы сделать это?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Я думаю, что вы ищете встроенное Oracle Уведомление об изменении базы данных , не уверенный, доступен ли он для Oracle в бесплатных версиях, если нет, то не обращайте внимания, для MySQL существует два или три API-интерфейса similairдля Java JDBC

3 голосов
/ 28 ноября 2011

Но проблема в том, что если я вставлю новую запись в базу данных, JTable не получит вновь вставленную строку / данные. Это почему?

TableModel не знает, когда база данных обновляется.

и как я могу решить эту проблему?

Если ваше приложение добавляет строку в базу данных, то оно также должно добавить строку в TableModel одновременно.

...