Java JComboBox ExecuteQuery选择项错误
我有3个jComboBox。第一个是房间类型。当我在第一个jComboBox上选择房间类型时,它必须在第二个jComboBox中显示所有可用房间,但当我选择其中一个房间类型时,会弹出一个错误u.p 下面是在第一个jComboBox上执行的操作代码 执行了第一个jComboBox操作*Java JComboBox ExecuteQuery选择项错误,java,sqlite,Java,Sqlite,我有3个jComboBox。第一个是房间类型。当我在第一个jComboBox上选择房间类型时,它必须在第二个jComboBox中显示所有可用房间,但当我选择其中一个房间类型时,会弹出一个错误u.p 下面是在第一个jComboBox上执行的操作代码 执行了第一个jComboBox操作* if(jComboBox13.getSelectedItem().toString().equals("SELECT")){ }else{ try{
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);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
e.printStackTrace();
}finally {
try {
rs.close();
pst.close();
}catch(Exception e){
}
}
}
但在我选择另一种房间类型后,它将工作
我试图删除combobox.removeAllItems;
但它将继续添加jCombobox中的所有项
将近一周的时间试图找出答案。首先,有人能帮忙吗。您应该为对象变量指定一个有用的名称: Ex:JCombox13->JComboxComboroomsType=新建JCombox13;或者你喜欢的名字 然后,很高兴看到所有涉及的代码。我看不到您在哪里初始化ResultSet或PreparedStatement 我猜当试图检索值时,空指针来自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){
}
}
}
调用removeAllItems时,它会激发JComobox14的actionListener
在这个阶段,它将没有任何项目,因此getSelected将返回NULL
将您的if更改为
似乎您得到了一个NullPointerException。请将该异常的堆栈跟踪添加到问题中。要获得堆栈跟踪,必须添加e.printStackTrace;到代码中的第一个catch块。我将删除。来自rs.getStringRoom\u No。;你能帮我吗?我该怎么办?我刚刚告诉过你。如果我删除了,我怎么能把项目放在jComboBox上?@DummyDummy添加导致错误的房间类型值。有没有办法,当我在第一个jComboBox上选择时,它不会将第二个jComboBox设置为emptydon't call removeAllItems?但是如果您按照下面的代码操作,它会留在jComboBox内并复制项目张贴在我的答案,这将解决你的问题,将需要扩展为其他情况下太好了,我的情况下,请张贴你的代码,这样更多的调试可以完成。
if(jComboBox14.getItemCount() > 0 && (jComboBox14.getSelectedItem().toString().equals("SELECT") |
jComboBox14.getSelectedItem().toString().isEmpty())){