Javafx. Удаление строки из TableView и MySQL

213
11 февраля 2022, 02:40

Нужно реализовать удаление строки из базы данных при вводе номера этой строки (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();
}
}
READ ALSO
Как вывести ответ в JSON формате

Как вывести ответ в JSON формате

Всем привет я хочу удалить все сообщения, и если сообщения удалились то мне должен придти ответ в JSON формате {"Все сообщения удалены"} Однако...

114
Gradle не может скачать jar файлы

Gradle не может скачать jar файлы

Ссылки работаю перехожу все качает, но выходит ошибка:

84