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():
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 }
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

VVoVe: aiutooooooooooo!!!
Rispondi quotando