Witam,
Próbuję załadować dane z bazy do listy, a później do JComboBox. Trochę kodu:
public LinkedList<Pizza> loadPizzaByName(JComboBox cb) {
LinkedList<Pizza> listOfPizza= new LinkedList<Pizza>();
String sql = "SELECT * FROM PIZZE WHERE NAZWA like '" + cb.getSelectedItem() +"'";
try {
ResultSet result = statement.executeQuery(sql);
while (result.next()) {
Pizza pizza = new Pizza(
result.getString("nazwa"),
result.getString("opis"),
result.getString("kategoria"),
result.getDouble("cena"),
result.getInt("srednica"));
listOfPizza.add(pizza);
}
return listOfPizza;
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,
"Problem z pobraniem danych pizzy. " + ex);
return null;
}
}
cbCathegory.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//cbPizzaName.removeAllItems();
conn.openConnection();
LinkedList<Pizza> plist = conn.loadPizzaByName(cbCathegory);
for(Pizza p : plist){
cbPizzaName.addItem(p.getName());
}
}
});
Tutaj ten sposób nie działa, po prostu nie pojawiają się pizze z wybranej kategorii.
A teraz coś innego:
for (int i = 65; i <= 90; i++) {
char sign;
cbOfAlphabet.addItem((char) i);
}
listOfClients = new LinkedList<Client>();
btnEnd.addActionListener(this);
btnAdd.addActionListener(this);
btnClear.addActionListener(this);
cbOfAlphabet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
cbOfLastname.removeAllItems();
//Connection conn = new Connection();
conn.openConnection();
LinkedList<Client> l = conn.loadClientsByLastName(cbOfAlphabet);
for(Client c : l){
cbOfLastname.addItem(c.getLastname());
}
//conn.closeConnection();
}
});
cbOfLastname.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
conn.openConnection();
String lastname = (String)cbOfLastname.getSelectedItem();
//LinkedList<Client> l1 = new LinkedList();
Client l1 = conn.loadClientByLastname(lastname);
fieldID.setText(l1.getId()+"");
fieldLastname.setText(l1.getLastname());
fieldName.setText(l1.getName());
fieldTelephon.setText(l1.getTelephon());
//conn.closeConnection();
}
});
public LinkedList<Client> loadClientsByLastName(JComboBox jcb) {
String SQLcommand = "SELECT * FROM KLIENCI WHERE NAZWISKO LIKE '"+jcb.getSelectedItem()+"%'";
LinkedList<Client> listOfClients = new LinkedList<Client>();
try {
ResultSet result = statement.executeQuery(SQLcommand);
while (result.next()) {
Client client = new Client(result.getInt("IDKLIENTA"),
result.getString("IMIE"),
result.getString("NAZWISKO"),
result.getString("TELEFON"));
listOfClients.add(client);
}
return listOfClients;
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Nie udało się pobrać danych " + ex.getMessage());
return null;
}
}
Przecież tutaj jest to samo, więc dlaczego w jednym przypadku to działa, a w drugim nie?