gpt4 book ai didi

Java:删除选定的行结果集,而是从数据库中删除最后一行?

转载 作者:行者123 更新时间:2023-11-30 07:23:18 24 4
gpt4 key购买 nike

当我选择一行并按下“删除”按钮时:

在 swing 界面中,选定的行被删除(如预期的那样)。但是

在实际数据库中,无论所选行是什么(不是预期的),最后一行都会被删除。删除的行始终是数据库中的最后一行,无论实际选择的行是什么。我的代码中没有错误,也没有抛出异常。它的工作没有任何中断。

我实际上在我的代码中添加了必要的东西:

  Statement sqlStatement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

并添加一个“删除”按钮来删除选定的行:

JButton removeEmployee = new JButton("Remove Selected");
removeEmployee.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dTableModel.removeRow(table.getSelectedRow());
try
{
resultSet.absolute(table.getSelectedRow());
resultSet.deleteRow();

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

最佳答案

谢谢@Germann ...

我解决了,我会提供解决方案,以便其他人可以从中获得帮助。

你是对的 resultSet.absolute(...); 返回 boolean 值,但它也将光标移动到其参数 resultSet.absolute(table.getSelectedRow ());。那么问题出在哪里。

问题是:dTableModel.removeRow(table.getSelectedRow()); 行不能在 resultSet.absolute(table.getSelectedRow()); 之前调用,因为(第一个)它删除选定的行,因为它已被删除,所以第二个方法没有选择任何内容,因此 table.getSelectedRow() 返回 -1。并且如文档中所述,absolute(-1) 将光标移动到最后一行,并删除基础数据库中的最后一行。

所以解决方案是颠倒这些行的顺序,我更喜欢在 resultSet.deleteRow();

之后进行
    JButton removeEmployee = new JButton("Remove Selected");
removeEmployee.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{/* here I added +1 because it moves the row to the selected row -1
I don't know why. But it now works well */
resultSet.absolute(table.getSelectedRow()+1);
resultSet.deleteRow();
dTableModel.removeRow(table.getSelectedRow());
} catch (SQLException e1)
{
e1.printStackTrace();
}
}
});

关于Java:删除选定的行结果集,而是从数据库中删除最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104882/

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