我有ResultSet
。这个ResultSet
正在使用以下数据填充JComboBox
:
DatabaseHandler dh = new DatabaseHandler();
public ResultSet Klanten;
public BestellingenNieuwPanel() {
initComponents();
//Removes all items from KlantBox.
KlantBox.removeAllItems();
//Removes all from ProductBox.
ProductBox.removeAllItems();
try {
Klanten = dh.getDataFromDB("select * from klanten");
while (Klanten.next()) {
String strKlanten = Klanten.getString("Achternaam");
KlantBox.addItem(Klanten.getString(3));
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
这很好用。但是,每当我试图像这样再次遍历ResultSet
Klanten时:
private void KlantBoxActionPerformed(java.awt.event.ActionEvent evt) {
if(Klanten != null){
String strSelected = KlantBox.getSelectedItem().toString();
try {
while(Klanten.next()){
String KlantVoornaam = Klanten.getString(1);
String KlantAchternaam = Klanten.getString(2);
String KlantWoonplaats = Klanten.getString(4);
if(strSelected == KlantAchternaam){
txtKlantNaam.setText(KlantAchternaam);
txtKlantWoonplaats.setText(KlantWoonplaats);
}
}
} catch (SQLException ex) {
}
}
}
我的JComboBox
Klanten只有它的最后一个值。
我已经摆弄了Klanten.next()函数,发现该函数是问题的根源。
还有其他方法可以循环ResultSet
吗?
或者有没有办法循环ResultSet
而不重置我的JComboBox
?
答案 0 :(得分:1)
不要比较像if(strSelected == KlantAchternaam){
这样的字符串使用equals()代替。
但实际上在刷新组合框后,只需致电setSelectedItem(strSelected )
答案 1 :(得分:0)
我认为错误在于使用==
比较字符串而不是使用Klanteen.next()
尝试使用以下代码
if(strSelected.equals(KlantAchternaam)){
txtKlantNaam.setText(KlantAchternaam);
txtKlantWoonplaats.setText(KlantWoonplaats);
}
或者这个,如果你想忽略大小写
if(strSelected.equalsIgnoreCase(KlantAchternaam)){
txtKlantNaam.setText(KlantAchternaam);
txtKlantWoonplaats.setText(KlantWoonplaats);
}