Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Java] Inserimento dati da query in JTable

    Che cosa sbaglio in questo codice? Non mi viene visualizzato nessun cambiamento nella tabella...

    public class ArchivioClienti extends javax.swing.JFrame implements TableModelListener{

    Vector rows,columns;
    DefaultTableModel tabModel;

    /** Creates new form ArchivioClienti */
    public ArchivioClienti() {
    initComponents();

    rows=new Vector();
    columns= new Vector();
    String[] columnNames =
    {
    "Codice",
    "Nome",
    };
    addColumns(columnNames);

    tabModel=new DefaultTableModel();
    tabModel.setDataVector(rows,columns);

    TabellaClienti = new JTable(tabModel);
    jScrollPane1 = new JScrollPane(TabellaClienti);//ScrollPane

    TabellaClienti.setRowSelectionAllowed(false);

    TabellaClienti.getModel().addTableModelListener(th is);

    String [][] parametri = {{"DRIVER", "Microsoft Access Driver (*.mdb)"},
    {"DBQ", ".\\database\\ristorazione.MDB"}};
    ConnessioneDB db = new ConnessioneDB("", parametri);
    if ( !db.connetti() ) {
    System.out.println("Errore durante la connessione!");
    System.out.println( db.getErrore() );
    System.exit(0);
    }
    Vector v = db.eseguiQuery("SELECT Codice_cliente,Nome FROM Clienti;");

    rows.addElement(v);
    TabellaClienti.addNotify();
    }

    public void addColumns(String[] colName)//Table Columns
    {
    for(int i=0;i<colName.length;i++)
    columns.addElement((String) colName[i]);
    }

  2. #2
    nessuno sa darmi qualche indicazione su come caricare dati in una JTable da una query sql?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    41
    io sono neofita, te lo premetto....

    non ho capito che cosa fa il tuo odice, in particolare come dovrebbero funzionare i vector rows e columns e i relativi add.... che usi.

    quello che ti posso dire è che io faccio in un altro modo. Probabilmente è scritto tipo "Io Tarzan tu Cita" :-) però funziona.
    Ti copio qui un pezzetto di una mia applicazione che appunto fa quanto cerchi. Ovviamente ha le mie variabili e i miei campi ;-)

    codice:
    //questa parte va in un try-catch che gestisca le eccezioni sql
    jTable1.setModel(new javax.swing.table.DefaultTableModel(        
                        getTabella(rs),
                        new String [] {
                            "ID_persona","Nome","Cognome","Data_nascita","Luogo_Nascita","C.F.", "Sesso", "Cittadinanza"
                        }
                    ));
    
    //in new String[] coem vedi ci sono i titoli delle colonne
    poi getTabella è questo:
    codice:
    private Object[][] getTabella (ResultSet rs) throws SQLException {
                    nessunRisultato.setVisible(false);
                    int count = 0;
                    while(rs.next()) {
                        count++;
                    }        
                    Object[][] ob = new Object[count][];
                    if (count < 1) {
                        nessunRisultato.setVisible(true); /* questa è una label che dice che non ci sono righe che soddisfano le condizione date per la query */
    
                        return ob;
                        }
                    else {
                        rs.beforeFirst(); //riporto il puntatore nella posizione di partenza
                        int i = 0;
                            while(rs.next()) {
                                ob[i] = new Object[8];
                                ob[i][0] = rs.getString(1);
                                ob[i][1] = rs.getString(2);
                                ob[i][2] = rs.getString(3);
                                ob[i][3] = rs.getString(5);
                                ob[i][4] = rs.getString(6);
                                ob[i][5] = rs.getString(7);
                                ob[i][6] = rs.getString(8);
                                ob[i][7] = rs.getString(9);
                                i++;
                            }
                        return ob;
                    }
                }


    In poche parole lui ti conta quanto è lungo il resultSet (che è il risultato della query) e prepara una tabella che abbia tante righe quante le righe restituite dal resultset e tante colonne quante sono i campi che hai chiesto di visualizzare (e che costruisci uno per uno, come vedi). Quella sfilza di rs.getString naturalmente la puoi usare in modo diverso, cioè se i tuoi campi non sono String ma di altro tipo puoi usare metodi diversi oppure fare il casting nel tipo che ti sta più comodo, i nmodo da avere nelle variabili "cella" della tua tabella i tipo che ti serve. Per tipo intendo chiaramente String, int, Date e così via...

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.