我有一个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);
}
}
所以我想知道我在哪里犯了错误,所以如果有人愿意帮助我并告诉我那个错误,我会很高兴:)
答案 0 :(得分:2)
当您调用此FillOrderComboBox(...)
方法(应重命名为fillOrderComboBox(...)
)时,问题可能是。如果您在之前将其称为,则用户有机会选择任何内容,那么将所有3个数字放置在订单组合框中是有意义的。最好在ActionListener中使用此代码来响应进行初始选择的用户。另外,为什么要回到数据库呢?为什么不简单地遍历第一个JComboBox模型,使用每个项目除非选择它?
答案 1 :(得分:0)
删除查询中的单引号以获取未选中的数字。