problem z modelem tabeli

0

Pisze program, ktory ma laczyc sie z baza MySQL, pobierac rekordy z bazy danych i wyswietlac je w tabeli. Nazwy tabel i informacje potzrebne do implementacji modelu tabeli maja byc pobierane z metadanych.

Oto klasa implementujaca AbstactTableModel:

class ModelTabeli extends AbstractTableModel {

public ModelTabeli(ResultSet rSet)
{
   rs=rSet;
   try
   {
    rsmd=(ResultSetMetaData) rs.getMetaData();
   }catch(SQLException e){
       e.printStackTrace();
   }        
           
    
}



public String getColumnname(int c)
{
    try{
        return rsmd.getColumnName(c +1);
    }catch(SQLException e){
      e.printStackTrace();
     return "";
    }
} 


public int getColumnCount()
{       
  try{
    return rsmd.getColumnCount();
}catch(SQLException e){
    e.printStackTrace();
    return 0;
}

}


public Object getValueAt(int r,int c)
{
    try{
        rs.absolute(r +1 );
        return rs.getObject(c +1);
    }catch(SQLException e){
        e.printStackTrace();
        return null;
    }
            
}



public int getRowCount()
{
    try{
        rs.last();
        return rs.getRow();
    }catch(SQLException e){
        e.printStackTrace();
        return 0;
    }
}


private ResultSet rs;
private ResultSetMetaData rsmd;
}

A to funkcja, ktora obsluguje zdarzenie wyboru tablicy z rozwijanej listy. Nastepuje w niej przeakzanie obiektu ResultSet do obiektu modelu tabeli i ustawienie modelu.


  private void wyborTabActionPerformed(java.awt.event.ActionEvent evt) {                                         

      
       model=new ModelTabeli(rs);
       jTable1.setModel(model);  
        try{
               
           nazwaTab = (String)wyborTab.getSelectedItem();
           zapt="SELECT * FROM ";
           Connection con=nowePolaczenie.zwrocCon();
    stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            rs=stat.executeQuery(zapt+nazwaTab);
         
            
         }catch(SQLException e){System.out.println("Jakis blad: "+e.getMessage());}
                
        
         
      
    }                                  

private Statement stat;
private String nazwaTab;
private ResultSet rs;
private ModelTabeli model;

Po kompilacji i uruchomieniu programu i wyborze z listy tabeli otrzymuje komunikat:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ModelTabeli.<init>(ModelTabeli.java:23)
at SklepFrame.wyborTabActionPerformed(SklepFrame.java:111)
at SklepFrame.access$000(SklepFrame.java:23)
at SklepFrame$1.actionPerformed(SklepFrame.java:58)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:814)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 6 seconds)

Czy ktos potrafi mi pomoc i wskazac blad ?
Zastanawia mnie to rzutowania w konstruktorze modelu tabeli :
rsmd=(ResultSetMetaData) rs.getMetaData();
W ksiazce, ktora sie wspieram to przypisanie odbylo sie bez rzutowania, ale NetBeans sam zasugerowal wykonanie tego rzutowania bez tego sie nie kompiluje.

0

Problem rozwiazany wystarczylo przerzycic utworzenie modelu ponizej zainicjowania obiektu ResultSet a wydawalo mi sie , ze kompilator javy powinien sam odnalezc ten obiekt rs.

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