ciao!

vi posto il codice che utilizzo per visualizzare i dati di una tabella mysql in una jtable.
Non riesco a capire cosa sbaglio

Sono giorni che impazzisco!!!!!!!!!!! VVoVe: aiutooooooooooo!!!

Finestra contenente un pulsante "Dati in tabella" e crea una nuova finestra che conterrà i dati del database kiamando il metodo ModTab():
codice:
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;

import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;



private static final long serialVersionUID = 1L;


private JButton tabella;
private JPanel scatola; 

private JTable t;
public Connection conn;
 


/** Costruttore Data*/
public Table() {
super("prova database");
setSize(500,250);
setLocation(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

tabella = new JButton("DATI IN TABELLA");
scatola = new JPanel();




tabella.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
leggitabella(e);
} catch (SQLException ex) {
ex.printStackTrace();
} 
}
});

 

scatola.setLayout(null);
add(scatola); 


scatola.add(tabella);
tabella.setBounds(300,170,150,30);


}



public static void main(String[] args){ 

Table visualizza = new Table();
visualizza.setVisible(true);
} 

// il metodo gestionearchiovio serve ad inserire nuyovi dati nel database

 

public void actionPerformed(ActionEvent e) {
}

// il metodo leggi dati leggi idati dall’archivio e li visualizza in una nuova finestra

public void leggidati(ActionEvent e) throws SQLException{
// Costruzione nuova finestra
JDialog finestra = new JDialog();
JTextArea lavagna = new JTextArea();
Font f = new Font(" ", Font.BOLD,15); 
lavagna.setFont(f);
finestra.setTitle("finestra di dialogo col database");
finestra.setSize(400,400);
finestra.setLocation(300,200);
finestra.setVisible(true); 
finestra.setLayout(new BorderLayout());
finestra.add(BorderLayout.CENTER,new JScrollPane(lavagna)); 
finestra.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);




//int i;


} // fine leggidati

// parte relative alla visualizzazione dei dati in una tabella

@SuppressWarnings("serial")



// il metodo leggitabella fa vedre il dislay dei dati in una tabella in una nuova finestra

public void leggitabella(ActionEvent e) throws SQLException{

// costruzione nuova finestra

JDialog finestra2 = new JDialog();
@SuppressWarnings("unused")
JTextArea lavagna2 = new JTextArea();
Font f2 = new Font(null, Font.BOLD,15); 
ModTab miomodello = new ModTab("Utente");
t = new JTable(miomodello);
finestra2.add(t);
finestra2.setFont(f2);
finestra2.setTitle("visualizzazione dati in tabella");
finestra2.setSize(600,400);
finestra2.setLocation(300,200);
finestra2.setVisible(true); 
finestra2.setLayout(new BorderLayout());
finestra2.add(BorderLayout.CENTER,new JScrollPane(t)); 
finestra2.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 


} // fine leggitabella 

}
ModTab:
codice:
import java.sql.Connection;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.table.AbstractTableModel;
import org.schedule.db.*;

class ModTab extends AbstractTableModel{ 
	String[] NomeColonna;
	String[][] cells;
	public int getRowCount(){
		return cells.length; 
		} // ritorna il numero delle celle

		public int getColumnCount(){
		return NomeColonna.length;
		} // ritorna il numero delle colonne

		public ResultSet getResultSet()
		{ return rsltMT; 
		}


		public Object getValueAt(int r, int c) {

			return (String)cells[r][c];

		} // fine Object getValueAct 


		public String getColumnName(int c) { 
			return NomeColonna[c];
		} // ritorna il nome delle colonne
	/**
	 * 
	 * 
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Connection connMT; 
	private Statement stmtMT; 
	private ResultSet rsltMT;
	private ResultSetMetaData rsmdMT; 
	
	
	
	public ModTab(String NomeTable) throws SQLException{

	super(); 
	int rowCount;
	String query;
	
	SQLManager sqlm = new SQLManager("com.mysql.jdbc.Driver","jdbc:mysql://localhost:3306/schedule","root","root");
	query = "Select * from" + NomeTable;
	
	try{
		rowCount = SQLManager.getRecordCount(NomeTable);
		NomeColonna = SQLManager.getColumnsName(NomeTable);
		cells = new String [rowCount][NomeColonna.length];
		
		ResultSet rs = SQLManager.execute(query); 
		 
		int counter =0;
		
		while (rs.next()){
			for (int i=0; i<NomeColonna.length; i++)
				cells[counter][i] = rs.getString(i+1);
				counter++;
		}
		}
		catch (Exception ex){
			System.out.println(ex);
		}
	finally{
		sqlm.close();
	}
	}// fine costruttore


	} // fine class Modtab

MSQManager per la gestione della connessione e delle query:

codice:
import java.sql.*;

public class SQLManager {
	private Connection conn; 
    private PreparedStatement pstmt; 
    private static ResultSet rs; 
    @SuppressWarnings("unused")
	private static Statement Stm;
   


    public SQLManager(String driver, String connectionURL, String userDB, String passwordDB){ 
         try{ 
              Class.forName(driver); 
              conn = DriverManager.getConnection(connectionURL , userDB, passwordDB); 
         }catch(Exception ex){ 
              System.out.println("SQLException: " + ex.getMessage()); 
         } 
    } 
     
    public void close(){ 
         try { 
              if(rs!=null) 
                   rs.close(); 
              if(pstmt!=null) 
                   pstmt.close(); 
              if(conn!=null) 
                   conn.close(); 
         } catch (SQLException ex) { 
              ex.printStackTrace(); 
         } 
    } 
    

	
    public static ResultSet execute(String query) {
    	try{ 
    	  rs = Stm.executeQuery(query); 
    	}catch(Exception ex){ 
            ex.printStackTrace(); 
             } 
    	  return rs;
    	 
    	} 
    public static int getRecordCount(String NomeTable) {
    	int result = 0;
		try{ 
    	  String query = "SELECT COUNT(*) FROM " + NomeTable; 
    	  rs = Stm.executeQuery(query); 
    	  rs.next(); 
    	  result = rs.getInt(1); 
    	}catch(Exception ex){ 
            ex.printStackTrace(); 
             } 
    	   return result; 
    	} 
    public static String[] getColumnsName(String NomeTable){
    	  String[] columnsName = null;
    	  try{ 

    	  ResultSet rs = Stm.executeQuery(
    	               "SELECT * FROM " + NomeTable);
    	  ResultSetMetaData rsmd = rs.getMetaData();

    	  int columnsNumber = rsmd.getColumnCount();
    	  columnsName = new String[columnsNumber];

    	  for (int i=0; i< columnsNumber; i++){
    	    columnsName[i] = rsmd.getColumnName(i+1);
    	  }
    	  }catch(Exception ex){ 
              ex.printStackTrace(); 
               }
		return columnsName; 
    	}


    }// fine eseguiQuery