使用来自另一个JComboBox的值在JComboBox中显示数据

时间:2015-04-13 16:43:14

标签: java mysql swing jcombobox

我有一个JComboBox显示来自MYSQL数据库表的帐号 看起来像这样:

    private void FillAcountComboBox(){
    try{
        String value = Login_TextField.getText();
        String sql = "select * from Acount where User_Number = '" +value+ "'";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();

        while(rs.next()){
            String AN = rs.getString("Acount_Number");
            Acount_ComboBox.addItem(AN);
        }

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

正如我所说。这工作正常,我知道有3个数字(858960647,881674907,34222865)所以这3个数字在Acount_ComboBox

但是我想做另一个JComboBox(Order_ComboBox),它将显示未在Acount_ComboBox中选择的那些数字。

所以基本上如果Acount_ComboBox选择了数字858960647,Order_ComboBox将显示881674907和34222865

所以,如果我尝试这个SQL命令:

String sql = "SELECT Acount_Number FROM Acount Where Acount_Number != 858960647"

它工作正常,Order_ComboBox显示881674907和34222865

但如果我想将“Order_ComboBox”升级为从Acount_ComboBox读取值,则会再次显示所有三个错误的数字。 :(

这是Order_ComboBox的“升级”代码:

private void FillOrderComboBox(){
    try{
        String value2 = Acount_ComboBox.getSelectedItem().toString(); 
        String sql = "SELECT Acount_Number FROM Acount Where Acount_Number != '" +value2+ "'";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();

        while(rs.next()){
            String AN2 = rs.getString("Acount_Number");
            Order_ComboBox.addItem(AN2);
        }

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

所以我想知道我在哪里犯了错误,所以如果有人愿意帮助我并告诉我那个错误,我会很高兴:)

2 个答案:

答案 0 :(得分:2)

当您调用此FillOrderComboBox(...)方法(应重命名为fillOrderComboBox(...))时,问题可能是。如果您在之前将其称为,则用户有机会选择任何内容,那么将所有3个数字放置在订单组合框中是有意义的。最好在ActionListener中使用此代码来响应进行初始选择的用户。另外,为什么要回到数据库呢?为什么不简单地遍历第一个JComboBox模型,使用每个项目除非选择它?

答案 1 :(得分:0)

删除查询中的单引号以获取未选中的数字。