JAVA- Swing+JDBC problem z wyświetlaniem

JAVA- Swing+JDBC problem z wyświetlaniem
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
piszę małą aplikację bazodanową z GUI w javie i natknąłem się na pierwsze schody.
Siedzę już przy tym dosyć sporo i nie mogę sobie poradzić. Przechodzę do konkretów, otóż kiedy pobieram dane z bazy danych i chcę wszystkie dane z wybranej kategorii wyświetlić w Textarea, wyświetla mi się tylko 1 rekord. Przesyłam kod:

Kopiuj

public class Projekt 
{

	private JFrame frame;
	public JTextArea produkty = new JTextArea(20,30);
	
	
	public Projekt() 
	{
		initialize();
	}

		private void initialize() 
		{
		frame = new JFrame();
		frame.setBounds(100, 100, 544, 361);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
				
		JRadioButton hp = new JRadioButton("HP");
		hp.setBounds(16, 95, 109, 23);
		hp.addActionListener(new WyswietlanieHP());
		frame.getContentPane().add(hp);
		
		JPanel panel = new JPanel();
		panel.setBounds(97, 66, 409, 238);
		frame.getContentPane().add(panel);
		
		panel.add(produkty);
		produkty.setLineWrap(true);
	}



	class WyswietlanieHP implements ActionListener
	{
	    public void actionPerformed(ActionEvent e) 
	    {
	     
	    	Connection con = null;
	        Statement st = null;
	        ResultSet rs = null;
	        PreparedStatement pst = null;

	        String url = "jdbc:mysql://localhost:3306/pab2";
	        String user = "root";
	        String password = "xxx";
	
		con = DriverManager.getConnection(url, user, password);
        pst = con.prepareStatement("SELECT * FROM produkty WHERE marka='"+ "HP" +"'");
        rs = pst.executeQuery();
      
        while (rs.next())
        {
        	// próbowałem na rózny sposób modyfikować tę pętlę while ale nie daję rady, zapytanie jest napewno dobre
        	//myslę że źle wyswietlam te dane i pobierane rekordy sie nadpisują na siebie i dlatego mam tylko 1 rekord z bazy a nie wszystkie
        	//moze sie mylę, nie wiem
        	produkty.setText(" Marka: "+rs.getString(2)+" \n Model: "+rs.getString(3)+" \n Cena: "+rs.getString(4)+"zl \n Parametry: "+rs.getString(5)+"\n"+"\n");
        }
        
		
	  }
	}
}




 

Z góry dziękuję za pomoc.
Pozdrawiam
Edek

A7
  • Rejestracja: dni
  • Ostatnio: dni
0

Bo używasz metody setText(), która nie dołącza tekstu do JTextArea, tylko nadpisuje istniejący nowym podanym przez Ciebie.
Jeśli chcesz dołączać tekst to używaj metody append();

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki, działa, tylko jest jedno małe ale. Jest może dostępna jakaś metoda, która czyści textarea ??
Problem teraz polega na tym, że jak wybiorę radiobutton to wyświetla mi to co chcę, ale jeśli przełączę na 2 radiobutton, to nie znikają mi poprzednie dane, tylko do nich dopisywane są kolejne itp.

A7
  • Rejestracja: dni
  • Ostatnio: dni
0

Żeby wyczyścić zawartość to wywołujesz coś takiego:
produkty.setText("");

azalut
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1129
1

może spróboj za każdym kliknięciem radiobuttona wywoływać jakąś stworzoną metode która świeżo bedzie pobierać dane z bazy, ale wg kryteriów
edit
zawsze możesz też stworzyć niewidoczny JTextArea i do niego wczytać wyniki z bazy, a potem filtrować tego JTextArea zaznaczając radiobuttony i wyświetlać w swoim głównym "miejscu"

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za pomoc,
wszystko śmiga :)

Pozdrawiam
Edek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.