wyświetlenie tabeli z bazy danych w JTable

0

Witam mam kłopot z dodaniem tabeli z bazy danych do JTable. Nie wiem w czym tkwi problem. Oto klasa która łączy się z bazą i ma wyświetlać tabelę.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JOptionPane;

public class Wszyscy
{   
    private Connection conn=null;
    Vector kolumny=new Vector();
    Vector dane=new Vector(7);

    public boolean get_data() throws ClassNotFoundException
    {
        String dbURL=new String("jdbc:postgresql://127.0.0.1:5432/postgres");
        Statement st =null;
        ResultSet rs = null;
        boolean zmienna=false;
        try
        {
            Class d = Class.forName("org.postgresql.Driver");
            conn=DriverManager.getConnection(dbURL,"postgres","root");
            st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs=st.executeQuery("select * from rr;");
            while(rs.next())
            {
                Vector row = new Vector(7);
                row.add(rs.getString(1));
                row.add(rs.getString(2));
                row.add(rs.getString(3));
                row.add(Integer.toString(rs.getInt(4)));
                row.add(rs.getString(5));
                row.add(rs.getString(6));
                row.add(rs.getString(7));
                dane.add(row);
                zmienna=true;
            }           
            JOptionPane.showConfirmDialog(null, "Wyświetlono wszystkich pancjentów ", "Infomacja",JOptionPane.PLAIN_MESSAGE);
        }
        catch (SQLException b)
        {
            JOptionPane.showConfirmDialog(null, "Polaczenie z baza danych nie powiodlo sie "+b, "Infomacja",JOptionPane.PLAIN_MESSAGE);;
        }
        catch(ClassNotFoundException exc)
        {
            JOptionPane.showConfirmDialog(null, exc+"\nblad: sterownik nie zostal znaleziony", "Infomacja",JOptionPane.PLAIN_MESSAGE);
        }
        return zmienna;
    }
    public Vector ret_rows()
    {
        return dane;
    }
}

wywołanie klasy po wciśnięciu przycisku:

else if(z == cala)
        {
            try {
                calabaza.get_data();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(RR_u_dzieci.class.getName()).log(Level.SEVERE, null, ex);
            }
            model = new DefaultTableModel(calabaza.ret_rows(),kolumny);
           
            tabela_widok = new JTable(model);
            pane = new JScrollPane(tabela_widok);
            add(pane);
        } 
0

Problem tkwi w tym, że nie napisałeś o co chodzi. Masz jakieś wyjątki? To wrzuć tutaj. Wyświetla się nie to co chcesz? To napisz/opisz jak jest a jak ma być. Jak widać do tej pory nikomu nie chciało się analizować dokładnie kodu, żeby zgadnąć co ci może nie działać.

0

Właśnie o to chodzi że nic się nie dzieje NetBeans nie wyrzuca żadnego błędu/wyjątku po kliknięciu w przycisk wyświetla się okienko o tym że tabela została wczytana, czyli połączenie z bazą jest. Następnie w JTable powinna pojawić się tablica z bazy niestety nic się nie zmienia JTable zostaje puste a dane w tebeli są na 100% bo gdy sprawdzam polecenie w postgresie to wyświetla mi rekordy.

0

To po add(pane) wywołaj jeszcze metodę repaint(). Powinieneś wypełnić wektor kolumny. Wektor dane nie musi mieć rozmiaru 7 deklarowanego przy tworzeniu.

0

ok udało mi się miałem ustawioną jedną JTable w programie a ta z tabelą z bazy prawdopodobnie była wyświetlana pod nią :) albo coś takiego w każdym razie udało się :) tylko pojawił się kolejny problem :/ wyświetlam tabelę z bazy ale gdy chcę wyświetlić ją po raz kolejny to tak jakby nakłada na istniejącą jak klikam myszką na zawartość to odsłania mi się stara tabela.

0

Ok poradziłem sb z problemem dzięki za pomoc.

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