删除按钮功能以从javafx tableView和SQLite表行中删除所选行

时间:2016-09-08 08:25:00

标签: java javafx sqlite

我是第一次参与Javafx项目的新手,可以真正使用一些帮助和方向。我已阅读并尝试了几种正确的语法,方法和建议。我曾经习惯让按钮功能起作用,除了一个。 我使用的是Netbeans 8.1,我安装了Java 1.8.0_102,sqlite-jdbc-3.8.11.2用于连接。

我有一个带有输入文本字段的TableView(txtUsername,txtPassword,txtWebsite,txtComments)和四个按钮Logout,Save,Clear和Delete。注销,保存和清除按钮功能完美,我的问题是删除功能。当选择一行并按下删除按钮时,它会从tableview ok中删除所选行,但不会从数据库表中删除,这就是我被卡住的地方。任何帮助都将受到高度赞赏和欢迎。

项目文件列表: application.css,background.jpeg,login.fxml,loginController.java,LoginModel.java,Main.java,SqliteConnectioo.java,user.fxml,UserController.java UserController.java文件中的deleteData函数:

public void deleteData(ActionEvent event) {        
    int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
    if (selectedIndex >= 0) {
        tableView.getItems().remove(selectedIndex);

    } else {
        // Row Not selected.
        Alert alert = new Alert(AlertType.WARNING);
        alert.setTitle("No Selection");
        alert.setHeaderText("No Username Selected");
        alert.setContentText("Please select a Username in the table.");
        alert.showAndWait();            

    }

}

如果你需要查看完整的文件或任何其他文件,请告诉我,我会发布,请提前感谢任何人可以给我的帮助。

1 个答案:

答案 0 :(得分:0)

你需要有一个DAO课程,我认为你可能已经有了一个,因为你的问题暗示了如何保存/添加到DB'功能。如果你没有这个功能,那么先尝试一下,你可能会学到一些东西,然后再按照这个问题。如果有,请在下面查看删除功能。

请不要询问有关添加功能的信息,因为这样可以巩固您要求完成任务的事实。假设你已经尝试过PreparedStatement而不是Statement。我正在回答这个问题。

您必须将以下方法和变量添加到DAO类,并使用UserController类中的标识符调用此方法。

private final String deleteQuery = "DELETE FROM <TABLE_NAME> WHERE <UNIQUE_COLUMN> = '"; //If you require multiple columns to get a unique row, add them in the where clause.

public void deleteRow(String uniqueIdentifier) {
      Statement stmt = con.createStatement(); //con is the connection object, it should be at SqliteConnectioo class
      stmt.executeUpdate(deleteQuery + uniqueIdentifier + "'");
      con.commit(); //If autocommit is off
}

此外,您可以使用以下内容检索TableView的模板/数据类型,

table.getSelectionModel().getSelectedItem()

由此,您将能够获得唯一的标识符。您对此DAO删除方法的调用如下。

...
if (selectedIndex >= 0) {
        TableViewDataType tvDt = tableView.getSelectionModel().getSelectedItem() //TableViewDataType is the class which you have used to create the TableView, you can find this at the TableView's declaration.
        dao.deleteRow(tvDt.getTxtUsername());//assuming TxtUsername is the unique identifier
        tableView.getItems().remove(selectedIndex);
    } else {
...

如果这不是您要求的,请通过添加更多代码来澄清。