Нужно реализовать удаление строки из базы данных при вводе номера этой строки (id_depositor) в текстовое поле id_depositorField. Добавление новых записей в таблицу работает, при удалении же ничего не происходит. Как это можно исправить?
Класс Depositors:
package sample;
import java.awt.*;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class Depositors {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private Button backButton;
@FXML
private TableView<depositorTable> depositor_Table;
@FXML
private TableColumn<depositorTable, Integer> id_depositor;
@FXML
private TableColumn<depositorTable, String> FIO;
@FXML
private TableColumn<depositorTable, String> address;
@FXML
private TableColumn<depositorTable, String> phone_number;
@FXML
private TableColumn<depositorTable, String> passport_data;
@FXML
private Button addButton;
@FXML
private Button changeButton;
@FXML
private Button deleteButton;
@FXML
private TextField id_depositorField;
@FXML
private TextField fioField;
@FXML
private TextField addressField;
@FXML
private TextField phone_numberField;
@FXML
private TextField passport_dataField;
ObservableList<depositorTable> oblist = FXCollections.observableArrayList();
@FXML
void initialize() {
addButton.setOnAction(actionEvent -> {
signUpNewDepositor();
oblist.clear();
addFunction();
});
deleteButton.setOnAction(actionEvent -> {
deleteChosenDepositor();
oblist.clear();
addFunction();
});
addFunction();
id_depositor.setCellValueFactory(new PropertyValueFactory<>("id_depositor"));
FIO.setCellValueFactory(new PropertyValueFactory<>("FIO"));
address.setCellValueFactory(new PropertyValueFactory<>("address"));
phone_number.setCellValueFactory(new PropertyValueFactory<>("phone_number"));
passport_data.setCellValueFactory(new PropertyValueFactory<>("passport_data"));
depositor_Table.setItems(oblist);
}
// вывод таблицы
public void addFunction() {
try {
Connection con = DatabaseHandler.getConnection();
ResultSet rs = con.createStatement().executeQuery("SELECT * FROM depositor");
while (rs.next()) {
oblist.add(new depositorTable(rs.getString("id_depositor"), rs.getString("FIO"),
rs.getString("address"), rs.getString("phone_number"),
rs.getString("passport_data")));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// добавление записи в таблицу
private void signUpNewDepositor() {
DatabaseHandler dbHandler = new DatabaseHandler();
String FIO = fioField.getText();
String address = addressField.getText();
String phone_number = phone_numberField.getText();
String passport_data = passport_dataField.getText();
depositorTable depositor = new depositorTable(FIO, address, phone_number, passport_data);
dbHandler.signUpDepositor(depositor);
}
// удаление записи из таблицы
private void deleteChosenDepositor() {
DatabaseHandler dbHandler = new DatabaseHandler();
String id_depositor = id_depositorField.getText();
depositorTable depositor = new depositorTable(id_depositor);
dbHandler.deleteDepositor(depositor);
}
}
Класс DatabaseHandler:
public void deleteDepositor(depositorTable depositor) {
String delete = "DELETE FROM " + Const.DEPOSITOR_TABLE + " WHERE " + Const.DEPOSITOR_ID + " = ?";
try {
PreparedStatement prSt = getDbConnection().prepareStatement(delete);
prSt.setString(1, depositor.getId_depositor());
prSt.executeUpdate();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет я хочу удалить все сообщения, и если сообщения удалились то мне должен придти ответ в JSON формате {"Все сообщения удалены"} Однако...