удалить данные из базы данных напрямую из интерфейса, используя javafx - PullRequest
0 голосов
/ 06 ноября 2018

enter image description here

Я хотел удалить данные из моего TableView непосредственно из моего графического интерфейса, когда я выбираю данные, которые удаляю их по значению идентификатора, он показывает ошибку, говорящую мне привести тип StudentData или создать ObservableList для обоих они не работают. что я делаю не так?

    public void Delete(ActionEvent event)
{
    try
    {
        Connection conn = SqliteConnection.Connector();
        StudentData data = (StudentData) studenttable.getSelectionModel().getSelectedItems();
        PreparedStatement ps = conn.prepareStatement("DELETE FROM Studentlist WHERE ID =?;");

        ps.setString(1, data.getID());
        ps.executeUpdate();
    }
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Я попробовал приведенный выше код, но по-прежнему безрезультатно удалить строку, выбранную в моем графическом интерфейсе

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018
public void Delete(ActionEvent event)
{
    try
    {
        Connection conn = SqliteConnection.Connector();
        PreparedStatement ps = conn.prepareStatement("DELETE FROM Studentlist WHERE ID = ?");
        StudentData studentdata = studenttable.getSelectionModel().getSelectedItem();
        ps.setString(1, studentdata.getID());

        ps.execute();
        conn.close();
    }
    catch (SQLException e)
    {
        System.out.println(e);
    }
}

Я думаю,

Ваше имя класса модели данных StudentData

Ваше имя TableView студент

так что ... синтаксис ...

//to select tableview row
StudentData selectedrow = studenttable.getSelectionModel().getSelectedItem();

//prepare query with blank ID to be filled with the value of the selected row
PreparedStatement ps = conn.prepareStatement("DELETE FROM Studentlist WHERE ID = ?");

//from the selected row getID only
ps.setString(1, selectedrow.getID());

//execute delete operation e.g DELETE FROM Studentlist WHERE ID = 123
ps.execute();

Обратите внимание, что TableView должен принимать StudentData в качестве аргумента типа, чтобы избежать приведения:

@FXML
private TableView<StudentData> studenttable;
0 голосов
/ 06 ноября 2018

Предполагая, что столбец ID имеет числовой тип, например целое число, вы должны привязывать числовой тип Java к заполнителю ?, например,

Connection conn = SqliteConnection.Connector();
StudentData data = (StudentData) studenttable.getSelectionModel().getSelectedItems();
PreparedStatement ps = conn.prepareStatement("DELETE FROM Studentlist WHERE ID = ?");
ps.setInt(1, data.getID());
ps.executeUpdate();

Если data.getID() вернет String, то проанализируйте его в целое число, используя:

int theID = Integer.valueOf(data.getID());

и затем свяжите это с вашим утверждением:

ps.setInt(1, theID);

В качестве дополнительного примечания вам не нужно указывать точку с запятой в конце оператора удаления при выполнении вызова из JDBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...