Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163

    Problema visualizzazione dati in jtable

    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

  2. #2
    Utente di HTML.it L'avatar di 1sirena
    Registrato dal
    Mar 2008
    Messaggi
    163
    Ho seguito questo articolo:
    http://www.mokabyte.it/2002/05/jtable-2.htm

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.