Java的:删除所选行的ResultSet,从数据库中删除,而不是最后一排?(Java: Delet

2019-06-27 08:24发布

当我选择一个行,按“删除”按钮:

在摆动接口所选择的行被移除(如预期)。 但

在实际的数据库中的最后一行被删除无论是(不预期)选定行。 删除的行始终在数据库中的最后一排,无论实际选择的行了。 有没有错误,没有例外在我的代码抛出。 它的工作原理没有任何中断。

其实,我添加了必要的事情,我的代码:

  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();
    }
  }
});

Answer 1:

谢谢@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();
        }
      }
    });


Answer 2:

removePres.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        // Will remove which ever row that is selected
        try {
            // Moves the database to the row currently selected
            // getSelectedRow returns the row number for the selected            
            resultSet.absolute(table.getSelectedRow()+1);
            resultSet.deleteRow();
            dTableModel.removeRow(table.getSelectedRow());
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

示出了在结果集误差Δθ



文章来源: Java: Delete a selected row ResultSet, Deletes last row from the database instead?