为了账号安全,请及时绑定邮箱和手机立即绑定

JComboBox ExecuteQuery 选择项目错误

JComboBox ExecuteQuery 选择项目错误

至尊宝的传说 2022-06-04 15:53:46
我有 3 个 jComboBox。第一个是房间类型。当我在第一个 jComboBox 上选择房间类型时,它必须在第二个 jComboBox 中显示所有可用房间,但是当我选择其中一个房间类型时,会弹出一个错误这是在第一个 jComboBox 上执行的操作的代码第一个 jComboBox actionperformed*    if(jComboBox13.getSelectedItem().toString().equals("SELECT")){    }else{            try{            String like = jComboBox13.getSelectedItem().toString();            String sql = "Select * From Room_Master\n" +                         "inner join Room_Type on Room_Master.Room_Type_ID=Room_Type.Room_Type_ID\n" +                         "where Room_Type = '"+like+"'";            pst = conn.prepareStatement(sql);            rs = pst.executeQuery();            jComboBox14.removeAllItems();            jComboBox14.addItem("SELECT");        while(rs.next()){            String add1 = rs.getString("Room_No.");            jComboBox14.addItem(add1);        }        }catch(Exception e){            JOptionPane.showMessageDialog(null, e);        }finally {            try {               rs.close();               pst.close();            }catch(Exception e){            }        }    }执行了第二个 jComboBox 操作if(jComboBox14.getSelectedItem().toString().equals("SELECT") | jComboBox14.getSelectedItem().toString().isEmpty()){    }else{            try{            String like = jComboBox14.getSelectedItem().toString();            String sql = "Select * from Bed_Master\n" +                         "inner join Room_Master on Bed_Master.Room_ID=Room_Master.Room_ID\n" +                         "where [Room_No.] = '"+like+"'";            pst = conn.prepareStatement(sql);            rs = pst.executeQuery();            jComboBox15.removeAllItems();            jComboBox15.addItem("SELECT");        while(rs.next()){            String add1 = rs.getString("Bed_No.");            jComboBox15.addItem(add1);            }        }    }但是在我选择另一个房间类型后它会起作用我试图删除“combobox.removeAllItems();” 但它会在近 1 周的时间内不断添加 jCombobox 中的所有项目,试图弄清楚有人可以帮忙吗
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

当你调用removeAllItems它时会触发 actionListenerjComoboBox14 并且在这个阶段它不会有任何 Items 所以getSelected会返回NULL

改变你if

if(jComboBox14.getItemCount() > 0 && (jComboBox14.getSelectedItem().toString().equals("SELECT") |
                                             jComboBox14.getSelectedItem().toString().isEmpty())){

查看完整回答
反对 回复 2022-06-04
?
HUWWW

TA贡献1874条经验 获得超12个赞

首先。你应该给你的对象变量一个有用的名字:例如:jComboBox13 --> JComboBox comboRoomsType  = new JComboBox();或者你喜欢的任何名字。


然后,很高兴看到所有涉及的代码。我看不到你在哪里初始化ResultSetor PreparedStatement;


我猜 NullPointer 在尝试检索值时来自 select 语句。


if(jComboBox13.getSelectedItem().toString().equals("SELECT")){


}else{

        try{

        String like = jComboBox13.getSelectedItem().toString();

        String sql = "Select * From Room_Master RM " +

                     "inner join Room_Type RT on RM.Room_Type_ID=RT.Room_Type_ID " 

                     +"where Room_Type = '"+like+"'";

        pst = conn.prepareStatement(sql);

        rs = pst.executeQuery();

        jComboBox14.removeAllItems();

        jComboBox14.addItem("SELECT");

     //you can also check if there are values first.

    while(rs.hasNext()){

        rs.next();

        String add1 = rs.getString("Room_No");

       //You can also use 

       //String add1 = rs.getInt(number of column of <Room_No> );

        jComboBox14.addItem(add1);

    }

    }catch(Exception e){

        e.printStackTrace();

        JOptionPane.showMessageDialog(null, e);

    }finally {

        try {

           rs.close();

           pst.close();

        }catch(Exception e){


        }

    }

}


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信