Wyświetlanie rekordów z całej tabeli bazy danych w jTable

0

Cześć, mam taki problem, gdyż chcę wyświetlić całą tabelę z bazy danych w jTable, lecz nie wiem w jaki sposób przełączać się między kolejnymi rekordami by nie wypisywać ciągle tych samych..
Fragment klasy gui:

 private void jWyswietlActionPerformed(java.awt.event.ActionEvent evt) {                                          
           
         for (int i=0; i<3;i++){
             zp.wyswietlDaneZBazy();
            
        DefaultTableModel model =(DefaultTableModel)jTabela.getModel();
        model.addRow(new String[]{zp.id_klienta,zp.imie,zp.nazwisko,zp.adres,zp.miasto,zp.telefon});
         }
        // TODO add your handling code here:
    }

Fragment z klasy ZP:

 public  void wyswietlDaneZBazy(){
              String polaczenieURL = "jdbc:postgresql://localhost:5432/postgres?user=postgres&password=123456";
                //Tworzymy proste zapytanie do bazy danych
                String wyswietl = "Select * FROM public.\"Klient\"";
               
                Connection conn = null;
               
                try {
 
                        //Ustawiamy dane dotyczące podłączenia
                        conn = DriverManager.getConnection(polaczenieURL);
                       
                        //Ustawiamy sterownik MySQL
                        Class.forName("com.mysql.jdbc.Driver");
                       
                        //Uruchamiamy zapytanie do bazy danych
                        Statement stmt = conn.createStatement();
                        ResultSet rs = stmt.executeQuery(wyswietl);
                        
                        while (rs.next()) {
                                wyswietl(rs);
                        }
    
       
                        conn.close();
                }
                //Wyrzuć wyjątki jężeli nastąpią błędy z podłączeniem do bazy danych lub blędy zapytania o dane
                catch(ClassNotFoundException wyjatek) {
                        System.out.println("Problem ze sterownikiem");
                }
 
                catch(SQLException wyjatek) {
                    //    e.printStackTrace();
                     //   System.out.println("Problem z logowaniem\nProsze sprawdzic:\n nazwę użytkownika, hasło, nazwę bazy danych lub adres IP serwera");
                        System.out.println("SQLException: " + wyjatek.getMessage());
                    System.out.println("SQLState: " + wyjatek.getSQLState());
                    System.out.println("VendorError: " + wyjatek.getErrorCode());
                }
        }
            public static void wyswietl(ResultSet rs){
                
           
                try{
                id_klienta = rs.getString(1);
                imie = rs.getString(2);
                nazwisko = rs.getString(3);
                adres = rs.getString(4);
                miasto = rs.getString(5);
                telefon = rs.getString(6);
                
                daneZBazy = rs.getString(1);
                System.out.print("\n" + daneZBazy + " ");
                daneZBazy= rs.getString(2);
                System.out.print(daneZBazy+ " ");
                daneZBazy = rs.getString(3);
                System.out.print(daneZBazy+ " ");
                daneZBazy = rs.getString(4);
                System.out.print(daneZBazy+ " ");
                daneZBazy = rs.getString(5);
                System.out.print(daneZBazy+ " ");
                daneZBazy = rs.getString(6);
                System.out.print(daneZBazy+ " ");
                
                }catch(SQLException e) {
                        e.printStackTrace();
                }
   
        }

W konsoli dobrze wypisuje, lecz do jTable przesyła tylko ostatni rekord

0

I jak widzisz nikt Ci nie odpowie bo aby coś takiego uzyskać trzeba kombinować z ruchem po tabeli i wypełnianiem JTable. Niestety Java nie ma żadnego komponentu który by można połączyć na sztywno z tabelą i który by załatwiał sprawę poruszania się po całej tabeli (tak jak ma to miejsce np.w Delphi - DBGrid). JTable to prosty komponent do którego musisz sam ładować tabele - porażka.

0

Jeśli baza nie jest bardzo duża, to można to zrobić. Trzeba całą bazę wczytać do kolekcji, utworzyć model,..
Podstawowy błąd jest tu:

                try{
                id_klienta = rs.getString(1);
                imie = rs.getString(2);
                nazwisko = rs.getString(3);
                adres = rs.getString(4);
                miasto = rs.getString(5);
                telefon = rs.getString(6);

Zamiast tego kodu, powinno być utworzenie nowego Studenta (new Student(rs.getString(),...)) i dodanie go do modelu.

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