当前位置: 首页 > 面试题库 >

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

楚修为
2023-03-14
问题内容

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

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

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

我实际上在代码中添加了必要的内容:

  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(...);返回布尔值,但是它也将光标移动到其参数中的指定行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();
        }
      }
    });


 类似资料:
  • 我正在使用AbstractTableModel,并试图从JTable中删除所选行。 我能够从表中选择特定的行;但当我单击delete按钮时,所选行变为空(即所选行中的所有数据变为空),最后一行将从JTable中删除。 我认为可能是fireTableRowsDeleted()不起作用。请在这方面帮助我。我已经搜索了stackoverflow,但找不到解决方案。 请在下面找到我的代码。 //删除按钮侦

  • 问题内容: 我需要从数据库中删除除前两个选定日期以外的所有日期: 我想在一个查询中删除除前两个日期以外的所有日期。 问题答案:

  • 我正试图从数据库中删除一行,但得到以下错误

  • 我是新来的希望你们能帮我。。。 我是java编程的初学者,我想我对这个问题有点不知所措。 我的程序运行得很好,除了一个让我恼火的小细节。我有一个JTable,第一列有一个按钮,可以从表中删除这一行。它工作得很好,除了当我试图删除表的最后一行时,按钮停留在那里,然后表冻结,我无法删除任何行,因为我收到了一个“越界异常”。但是,当我使用命令表时。getRowCount()); 在删除该行之前和之后,表

  • 问题内容: 我需要从数据库中删除重复的行。我可以用简单的SQL查询吗?如果没有,请告诉我一些快速算法。 例子: 我需要删除ID为2的行(或3,无论如何,它们是相等的,但不能同时都是)。谢谢你的帮助 问题答案: 正如评论中指出的那样,如果连续出现三遍,则此操作将无效。您可以重复运行此(繁重的)查询,直到停止删除内容为止,或者等待更好的答案…

  • 问题内容: 我有以下数组。 我想删除最后一个元素,即2。 我用过,但不会删除值。 问题答案: 使用拼接(索引,多个)