所以我有一個犯了這樣的在Java的更新單行數據庫
{材料名稱; QUANTITY}數據庫
我也有一個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 +"';";
也許有一種方法可以保存該值的以前的值?我不能使用可能重複的材料數量。
我想避免添加ID到對象如果可能的話。
不相關,但是:***不***將值連接到SQL查詢中。學習正確使用'PreparedStatement'來代替。 –