gpt4 book ai didi

尝试从数据库中删除行时发生 JavaFX 错误

转载 作者:行者123 更新时间:2023-11-29 10:45:37 25 4
gpt4 key购买 nike

当我尝试删除行时,出现以下错误:java.sql.SQLException:结果集开始之前。无法调用deleteRow()

我想要做的是添加一个删除按钮,该按钮从 TableView 中删除选定的行。它可以将其从表中删除。然而它并没有删除数据库中的行,我在尝试解决如何做到这一点的不同方法方面遇到了一些困难......

删除按钮:

 Button removeButton1 = new Button("Remove");
removeButton1.setMaxWidth(150);
removeButton1.setOnAction(e -> {
try {
int selectedIndex = itemTable.getSelectionModel().getSelectedIndex();
itemTable.setEditable(true);
itemTable.getItems().remove(selectedIndex);
inventoryData.removeItem();

} catch (SQLException e1) {
e1.printStackTrace();
}
});

删除项目方法(错误):

public void removeItem() throws SQLException {
Statement stmt = null;

try {
stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = stmt.executeQuery("SELECT * FROM Items");

uprs.deleteRow();
uprs.first();

} catch (Exception e){
e.printStackTrace();
} finally {
if(stmt != null){
stmt.close();
}
}

}

问题(我认为)是deleteRow(),因为我没有表达要删除的行...但是我对如何解决这个问题感到非常迷茫...例如,对于TextField,我可以获取字符串/整数值,它会在数据库中为我找到它......但是当用户只需单击一行时我该怎么做?我试图在 stackoverflow 上查找以前的问题,但可惜我的困惑只是加剧了......

提前致谢。

编辑

private final IntegerProperty itemId = new SimpleIntegerProperty(this,"itemId");

public IntegerProperty itemIdProperty(){
return itemId;
}

public final int getItemId(){
return itemIdProperty().get();
}

public final void setItemId(int itemId){
itemIdProperty().set(itemId);
}

最佳答案

你可以做到

removeButton1.setOnAction(e -> {
try {
Item selectedItem = itemTable.getSelectionModel().getSelectedItem();
itemTable.getItems().remove(selectedItem);
inventoryData.removeItem(selectedItem.getItemId());

} catch (SQLException e1) {
e1.printStackTrace();
}
}

public void removeItem(int itemId) throws SQLException {
PreparedStatement stmt = null;

try {
stmt = connection.prepareStatement("DELETE FROM Items where item_id = ?");
stmt.setInt(1, itemId);
stmt.execute();
} catch (Exception e){
e.printStackTrace();
} finally {
if(stmt != null){
stmt.close();
}
}

}

(我假设您的 JavaFX 表的模型类是 Item ,即您有一个 TableView<Item> :根据需要更改第一个 block 中 selectedItem 的类型。)

关于尝试从数据库中删除行时发生 JavaFX 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44630436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com