我正在尝试更新JComboBox中的值,但问题是当我添加或删除值时,重复了JComboBox中的所有名称,我该如何解决呢?连接关闭后我尝试将其放上,但没有用

这是我的代码:

  private void cmbNamesPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {

  try{

     String tmp=(String)cmbNames.getSelectedItem();
     String sql="SELECT * FROM Account WHERE Fname=?";
     pst=conn.prepareStatement(sql);
     pst.setString(1,tmp);
     rs=pst.executeQuery();

     if(rs.next()){
          String add1=rs.getString("ID");
          txtID.setText(add1);
          String add2=rs.getString("Fname");
          txtFirst.setText(add2);
          String add3=rs.getString("Lname");
          txtLast.setText(add3);
          String add4=rs.getString("Username");
          txtUser.setText(add4);
          String add5=rs.getString("Password");
          txtPass.setText(add5);
          cmdUpdate.setEnabled(true);
          cmdDelete.setEnabled(true);
          cmdAdd.setEnabled(false);
      }
    }
    catch(SQLException e){
    JOptionPane.showMessageDialog(null,e);
    }
}


这是我在Names()中使用的代码:

     private void Names(){

      try{
        String sql="Select fname from account";
        pst=conn.prepareStatement(sql);
        rs=pst.executeQuery();

        while(rs.next()){
            String name=rs.getString("fname");
            cmbNames.addItem(name);

        }
        rs.close();
         pst.close();
    }

    catch(SQLException e){
         JOptionPane.showMessageDialog(null,e);
    }
    finally{
     try{
         rs.close();
         pst.close();

     }
     catch(SQLException e){
           JOptionPane.showMessageDialog(null,e);
     }
 }

}

最佳答案

您从数据库进行的更新会添加查询中的项目。每次运行此功能时,只会继续添加项目。在运行更新之前,请清除组合框。

例如,在遍历结果集之前添加此行。

cmbNames.removeAllItems();

关于java - 在JCOMBOBOX中重复值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20612002/

10-09 03:03