Atualizando um banco de dados de linha única em Java
Então, eu tenho um banco de dados que é feito assim
{NOME DO MATERIAL; QUANTIDADE}
Eu também tenho uma JTable em Java que carrega as informações do banco de dados (SQLite). À medida que edito uma célula na tabela, ela atualiza automaticamente o banco de dados da seguinte maneira:
//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();
}
}
}
Tudo bem quando a quantidade é atualizada. No entanto, depois que o nome do material é atualizado, não sei como devo atualizá-lo no banco de dados.
String sql = "UPDATE MATERIALS set MATERIAL = " + materialId + " where MATERIAL='" + materialId +"';";
Talvez haja uma maneira de salvar um valor anterior desse valor? Não posso usar a quantidade de materiais, pois eles podem ser repetidos.
Gostaria de evitar adicionar IDs aos objetos, se possível.