繁体   English   中英

Delete Button函数从javafx tableView和SQLite表行中删除选定的行

[英]Delete Button function to delete selected row from javafx tableView and SQLite table row

我是新手,是第一次从事Javafx项目,真的可以使用一些帮助和指导。 我已阅读并尝试了几种变体,以获取正确的语法,方法和建议。 除了一个以外,我曾经使用过一些使按钮功能起作用的功能。 我正在使用Netbeans 8.1,已经安装了Java 1.8.0_102,并使用sqlite-jdbc-3.8.11.2进行连接。

我有一个带有输入(txtUsername,txtPassword,txtWebsite,txtComments)文本字段的TableView和四个按钮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();            

    }

}

如果您需要查看完整的文件或任何其他文件,请告诉我,我将其发布。在此先感谢您提供任何帮助。

您将需要有一个DAO类,我想您可能已经有了一个DAO类,因为您的问题暗示了具有“保存/添加到数据库”功能。 如果您没有此功能,请先尝试一下,然后您可能会学到一些东西,然后再回答此问题。 如果有,请在下面查找删除功能。

并且,请不要要求也了解添加功能,因为这只会巩固您要求完成分配的事实。 我在假设您尝试了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 {
...

如果这不是您要求的,请通过添加更多代码进行说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM