Обновление однорядной базы данных на Java
Итак, у меня есть база данных, которая сделана так
{ИМЯ МАТЕРИАЛА; КОЛИЧЕСТВО}
У меня также есть JTable на Java, который загружает информацию из базы данных (SQLite). Когда я редактирую ячейку в таблице, она автоматически обновляет базу данных следующим образом:
//table listener
public void tableChanged(TableModelEvent e) {
//gets row and column if the table is edited
int row = e.getFirstRow();
int column = e.getColumn();
//change in sqlite
if (column == 1) {
int value = Integer.parseInt(table.getModel().getValueAt(row, column).toString());
String materialId = table.getModel().getValueAt(row, column-1).toString();
try (Connection c = DriverManager.getConnection("jdbc:sqlite:database.db"); Statement statement = c.createStatement()) {
String sql = "UPDATE MATERIALS set QUANTITY = " + value + " where MATERIAL='" + materialId +"';";
statement.executeUpdate(sql);
statement.close();
c.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
else if (column == 0) {
int value = Integer.parseInt(table.getModel().getValueAt(row, column+1).toString());
String materialId = table.getModel().getValueAt(row, column).toString();
try (Connection c = DriverManager.getConnection("jdbc:sqlite:database.db"); Statement statement = c.createStatement()) {
String sql = "UPDATE MATERIALS set MATERIAL = " + materialId + " where MATERIAL='" + materialId +"';";
statement.executeUpdate(sql);
statement.close();
c.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
Это нормально, когда количество обновляется. Однако, как только название материала обновлено, я не знаю, как я должен обновить его в базе данных.
String sql = "UPDATE MATERIALS set MATERIAL = " + materialId + " where MATERIAL='" + materialId +"';";
Может быть, есть способ сохранить предыдущее значение этого значения? Я не могу использовать количество материалов, так как они могут повторяться.
Я хотел бы избежать добавления идентификаторов к объектам, если это возможно.