Newsgroup: it.comp.java
Titolo: Risultato di query in una jtable... NON VA!!!!! Non vedo niente.. Ma i dati ci sono!!

Ciao a tutti
 sto diventando pazzo...
non riesco a capire perche' non va.
O meglio, il source va, ma non mi mostra niente..
Qualcuno di voi mi puo' aiutare?  E' l'ultima parte del programma che 
devo scrivere. 
Ci sto pensando da 3 giorni..
Grazie mille. 
            ALEX
---
import java.awt.BorderLayout;
import java.sql.*;
import java.util.*;
import javax.swing.*;
public class test1 extends JFrame  {
public test1 () {
   //Connessione al database
   Connection con;
        int E1,E2,E3,E4;
 
   //Prepara lo statement per lanciare il comando al database
   PreparedStatement SQLPreparedStatement; // SQL ? ?
 
   //Set di record risultante (elenco di righe della tabella che
   //soddisfano il criterio della SELECT). SOLO PER LA QUERY SELECT!
   ResultSet rsQuery; // Set di record
 
   String SQL;
 
final String URL = 
"jdbc:mysql:///ControlloGestione?user=root&password=mmmm";
   Vector columnNames = new Vector();
        Vector data = new Vector();
   try {
      //Creazione di una istanza MySQL
      Class.forName("com.mysql.jdbc.Driver").newInstance();
 
      //Apertura della connessione al database
      con = DriverManager.getConnection(URL);
      System.out.println("Connessione OK!");
      //Statement stmt = conn.createStatement();
      //ResultSet res = stmt.executeQuery("SELECT * FROM Bilancio");
      //int righe = res.getFetchSize();
      //System.out.println ("SQLException:  " + righe);
      SQL = "SELECT * FROM DATI;";
      SQLPreparedStatement = con.prepareStatement(SQL);
 
      /*le righe corrispondenti alla SELECT vengono memorizzate in 
rsQuery
       * reQuery è un resultSet.
       */
      rsQuery = SQLPreparedStatement.executeQuery();
      ResultSetMetaData md = rsQuery.getMetaData();
    int columns = md.getColumnCount();
    System.out.println(columns);
                //Ciclo e assegnazione delle righe del resultSet
   // while (rsQuery.next()) {
   //    String Desc = rsQuery.getString("Descrizione");
   //    E1 = rsQuery.getInt("First");
   //    E2 = rsQuery.getInt("Second");
   //    E3 = rsQuery.getInt("Third");
   //    E4 = rsQuery.getInt("Fourth");
        //
   //    System.out.println(Desc  + "\t" + E1 + "\t" + E2 + "\t" + E3 + 
"\t" + E4);
   // }
                //---------------------------------------------------
                //controllo su jframeA
    while (rsQuery.next())
    {
    Vector row = new Vector(columns);
    for (int i = 1; i <= columns; i++)
    {
    row.addElement( rsQuery.getObject(i) );
    }
    data.addElement( row );
    }
      //Chiusura della connessione alla base di dati.
      con.close();
   } catch (Exception ex) {
      System.out.println(ex.getMessage());
         }
 
// Create table with database data
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
JPanel buttonPanel = new JPanel();
getContentPane().add( buttonPanel, BorderLayout.SOUTH );
 
   }
}

      con = DriverManager.getConnection(URL);
magari č lo stesso,
ma prova a farla cosě la connessione:
con = 
DriverManager.getConnection("jdbc:mysql://localhost/ControlloGestione", 
"root", "mmmm"); 

 wrote:

Si' ho provato, ma e' la stessa cosa!!!
Cosa puo' essere? sono 3 giorni che ci sto perdendo la testa....
Grazie dell'Aiuto
                  ALEX


aggiungi questo nel catch, ti dir� cosa succede
ex.printStackTrace(); 

 ex.printStackTrace(); 
non mi dice niente.
Il problema e' che va fino alla fine senza errori, ma mi mostra solo il 
frame vuoto, senza i numeri!!!!!!

 }

 pack();
Avevo provato, ma mi appare la finestra VUOTA!!!!
Nessun dato inserito..
GRazie mille.
Altre Idee?

il 16.03.2010 18.51, Scrive Alessandro Perrone 38510040:

Alla fine del costruttore aggiungi tutto a getContentPane(), in genere 
preferisco aggiungere tutto ad un JPanel creato ad hoc ed aggiungere 
solo quest'ultimo al contentpane della JFrame. Ad esempio:
JPanel p = new JPanel();
p.add(scrollPane);
p.setOpaque(true);
getContentPane().add(p);
Inoltre il vettore columnName mi sembra abbastanza vuoto, una JTable 
costruita così cercherebbe di crearsi il columnModel dai nomi delle 
colonne, per cui dopo:
int columns = md.getColumnCount();
aggiungi anche:
for (int c=1; c <= columns; c++)
	columnNames.add(md.getColumnName(c));

 	columnNames.add(md.getColumnName(c));
GRAZIE MILLE!!!
Sono in debito.
Ora sembra tutto funzionare!!!
Non so come ringraziarti.