Java устанавливает данные в JTable из базы данных - PullRequest
0 голосов
/ 18 июля 2011

я пытаюсь вставить данные из базы данных в Jtable вот мой код:

private Vector <Vector<String>> data;
private Vector<String> header;
table.setModel(new javax.swing.table.DefaultTableModel(
data,header     
));

GtFromDb db=new GtFromDb();
data=db.getClient();

header=new Vector<String>();
header.add("Imones pavadinimas");
header.add("vardas");
header.add("pavarde");
header.add("salis");
header.add("Adresas");
header.add("telefonas");

public Vector getClient() 
{
    Vector <Vector<String>> clientVector=new Vector<Vector<String>>();  
    try
    {
         PreparedStatement zadanie = connect.prepareStatement("SELECT * FROM Clients");
         dane = zadanie.executeQuery();
         while(dane.next()) {
             Vector <String> client=new Vector<String>();
             String imonesPav=dane.getString("Imones_pavadinimas");
             String vardas = dane.getString("Vardas");
             String pavarde = dane.getString("Pavarde");
             String salis = dane.getString("Salis");
             String adresas=dane.getString("Adresas");
             String telefonas = dane.getString("Telefonas");
             if (imonesPav != null) {
                 imonesPav = imonesPav.trim();
                 client.add(imonesPav);
             }
             if (vardas != null) {
                 vardas = vardas.trim();
                 client.add(vardas);
             }
             if (pavarde != null) {
                 pavarde = pavarde.trim();
                 client.add(pavarde);
             }
             if (salis != null) {
                 salis = salis.trim();
                 client.add(salis);
             }
             if (adresas != null) {
                 adresas = adresas.trim();
                 client.add(adresas);
             }
             if (telefonas != null) {
                 telefonas = telefonas.trim();
                 client.add(telefonas);
             }
        }
        zadanie.close();
    }
    catch(SQLException e){}
        return clientVector;    
    }

Это вызывает у меня ошибку:

java.lang.NullPointerException
at test$GtFromDb.getClient(test.java:108)
at test.<init>(test.java:49)
at test.main(test.java:24)

где проблема?

Ответы [ 2 ]

1 голос
/ 18 июля 2011

ты забыл добавить и еще ...

1) client=new Vector<String>(); во внутреннюю петлю DefaultTableModel while(dane.next()) {...}

2) public Vector getClient() должен быть инициализирован, вернуть ноль

3) изменить public Vector getClient() на public void getClient(), удалить оператор возврата

4) PreparedStatement zadanie должен быть закрыт в finally блоке try- catch - finally

5) dane = zadanie.executeQuery(); выглядит как Resultset, так же как PreparedStatement zadanie должен быть закрыт в finally блоке

6) JTable и Vector могут удерживать null value

7) если вы хотите отображать данные только от DbTable до JTable, тогда ищите ResultsetTableModel, TableFromDatabase, вы также можете найти их на этом форуме

0 голосов
/ 05 ноября 2017

Попробуйте эту структуру кодов, но в вашем:

DefaultTableModel dtm = new DefaultTableModel();
dtm.setColumnCount(2);
dtm.setRowCount(2);
dtm.setValueAt("Imones pavadinimas", 1, 1);
dtm.setValueAt("Imones vardas", 2, 1);
dtm.setValueAt("Pavarde", 1, 2);
dtm.setValueAt("Salis", 2, 2);
 ...
jTable1.setModel(dtm);
...