Итак, я заканчиваю адресную книгу в JavaFX. Пользователь может добавлять, редактировать, удалять и просматривать все контакты, которые хранятся в базе данных. Однако у меня есть небольшая проблема, если несколько записей совместно используют одну часть информации, когда я редактирую что-то для одной из них, она обновляет ее для всего. Вот пример:
Допустим, в моей базе данных есть три человека (Джон, Чарли и еще один Джон)
И, скажем, все три человека имеют разные телефонные номера. Я хочу обновить первый номер телефона Джона. Когда я меняю его, он изменяет оба номера телефона Джона на новое введенное мной значение.
Эта проблема на 100% связана с тем, как я написал SQL для функции обновления. Вот что у меня сейчас.
public void updateData(String column, String newValue, String id) throws SQLException {
String updateQuery = "UPDATE contacts SET " + column + " = ? WHERE " + column + "= ? ";
try {
PreparedStatement psmt = DBConnect.getConnection().prepareStatement(updateQuery);
psmt.setString(1, newValue);
psmt.setString(2, id);
psmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
UpdateData вызывается методами, поля которых я хочу изменить, вот так.
public void changePhoneNumberCellEvent(CellEditEvent editedCell) throws SQLException {
Person person = table_contact.getSelectionModel().getSelectedItem();
String oldPhoneNumber = person.getPhone_number();
person.setPhone_number(editedCell.getNewValue().toString());
updateData("phone_number", editedCell.getNewValue().toString(), oldPhoneNumber);
}
Теперь я знаю, что мой SQL ломается, потому что он находит несколько одинаковых значений в столбце first_name, например? Можно ли как-то отредактировать этот SQL, чтобы он изменил только информацию о человеке, которого я хочу изменить? Я провел некоторое исследование, и было поднято ключевое слово DISTINCT, но я не думаю, что это могло бы помочь, потому что 2 человека могут иметь одно и то же имя / фамилию и т. Д. c.
Спасибо.