Как сохранить новые значения из ячеек, а не старые? - PullRequest
1 голос
/ 18 февраля 2011

У меня есть JTable в JScrollPane, и данные поступают из базы данных. Ячейки доступны для редактирования, и я хочу сохранить новые значения (отредактированные) в базе данных. Проблема в том, что getValueAt (row, col) возвращает старые, неотредактированные значения.

Вот код, который берет значения из ячеек и вставляет их в базу данных.

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    int row = table.getEditingRow();
    if(row == -1) return -1;
    String name = tableModel.getValueAt(row, 0).toString();
    String stringPrice = tableModel.getValueAt(row, 1).toString();
    float price = Float.parseFloat(stringPrice);
    products.updateProduct(name, price);
    ...
    return 1;

А вот что я получаю в обновлении продукта (название, цена) метод:

UPDATE products
SET `prod_name` = 'OLD_NAME', `prod_price` = 'OLD_PRICE'
WHERE `id` = 4

вместо:

UPDATE products
SET `prod_name` = 'NEW_NAME', `prod_price` = 'NEW_PRICE'
WHERE `id` = 4

Возможно, есть простое решение, но я не могу понять это. Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Не зная точно, как вызывается ваш код, я думаю, что ваша проблема в том, что редактор ячеек не был остановлен, поэтому модель еще не была обновлена ​​новыми данными.

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

Или, если вы используете кнопку «Сохранить» для обновления базы данных, вам нужно прочитать Таблица Прекращение редактирования для решения вашей проблемы.

0 голосов
/ 18 февраля 2011

Вы можете реализовать свой собственный редактор ячеек и использовать его текущее значение вместо значения в модели, если оно активно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...