Ładowanie danych z bazy do listy i do JComboBox - dziwne zachowanie

0

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?
t2.PNGt1.PNG

0
SELECT * FROM PIZZE WHERE NAZWA like '" + cb.getSelectedItem() +"'

Jak dla mnie to ten SQL jest nieprawidłowy. Do LIKE brakuje prawdopodobnie znaczka %. Chyba, że cb.getSelectedItem() zwraca całą nazwę. To wtedy powinno coś zwrócić. Nie wiem co jest w tym itemie z comboboxa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1