當我嘗試刪除一行時,出現以下錯誤:java.sql.SQLException:結果集開始之前。無法調用deleteRow()嘗試從數據庫中刪除行時出現JavaFX錯誤
我想要做的是添加一個刪除按鈕,從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,我可以得到字符串/ int值,它會在我的數據庫中找到它...但是,如何在用戶只需點擊一行?我試圖在stackoverflow上查詢以前的問題,但唉,我的困惑只是excarbated ...
在此先感謝。
編輯
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);
}
你必須遍歷ResultSet與next()據我記得。 –
@OHGODSPIDERS我試過這個,雖然它沒有給出錯誤,但沒有對數據庫進行任何更改。除非我做錯了...? – purpleman
SELECT'SQL語句從數據庫表中選擇實體。要從表中刪除,請使用「DELETE」語句。看,也許https://stackoverflow.com/questions/27345614/how-to-delete-row-from-sql或[mysql文檔](https://dev.mysql.com/doc/refman/5.6/en /delete.html) –