Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    163

    [netbeans] riempire jtable con record db

    ciao!con netbeans ho creato una jtable e ci ho trascinato sopra una tabella di un db (come dicono molte guide online). la jtable ha preso le colonne e le intestazioni da i nomi dei campi.quindi la "connessione" o binding come la chiamano è avvenuta. però oltre i nomi delle colonne non vengono mostrati i record,la jtable appare grigia. come posso fare per renderli visibili?

    in public nomeprogetto(SingleFrameApplication app) { ho aggiunto questo codice:
    Codice PHP:
    try{
                
    String driver "org.apache.derby.jdbc.EmbeddedDriver";
                Class.
    forName(driver).newInstance();

                
    String protocol "jdbc:derby:db;";
                
    Connection c DriverManager.getConnectionprotocol );

                
    Statement exe c.createStatement();
                
    ResultSet r exe.executeQuery("SELECT * FROM table;");
                
    ResultSetMetaData m r.getMetaData();
                
    int nc m.getColumnCount();
                
    int i;
                
    int riga 0;
                while(
    r.next()){
                    for(
    i=1;i<=nc;i++){
                    
    jTable1.setValueAt(r.getString(i),riga,i);
                    }
                    
    riga++;
                }
                
    r.close();
                
    exe.close();
                
    c.close();
            }
            catch (
    ClassNotFoundException e){ System.out.println(e); }
            catch (
    SQLException e){ System.out.println(e); }
        catch (
    InstantiationException e){ System.out.println(e); }
            catch (
    IllegalAccessException e){ System.out.println(e); } 
    che in teoria dovrebbe riempire le celle della jtable con i record della tabella,ma non funziona.
    come faccio?

    p.s. : è giusto mettere manualmente il driver e l'url come ho fatto io in un progetto netbeans? ed è giusto inserire il codice in questo metodo?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Non so risponderti alle domande inerenti nebeans perchè scrivo tutto a mano.

    oltre i nomi delle colonne non vengono mostrati i record,la jtable appare grigia.
    Noto un for, ma sai a priori i dati del db?
    Io farei così:

    codice:
    // http://java.sun.com/j2se/1.5.0/docs/...ableModel.html
    DefaultTableModel model = new DefaultTableModel();
    table = new JTable(model);
    
    // Aggiungi le colonne "manualmente"
    model.addColumn("ID");
    model.addColumn("Nome");
    model.addColumn("Cognome");
    
    // Aggiungi le righe leggendo dal db; rs è un ResultSet e stm uno Statement
    rs = stm.executeQuery("SELECT id,nome,cognome FROM Persone");
    
    while(rs.next()) {
      Vector<String> row = new Vector<String>();
      row.addElement(rs.getString("id");
      row.addElement(rs.getString("nome");
      row.addElement(rs.getstring("cognome");
      
      model.addRow(row);
    }
    Questa potrebbe essere un idea ovviamente

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    163
    ok grazie! cerco di adattarlo a netbeans!

    TableModel sarebbe una table apposita per i db?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da nephilim89
    ok grazie! cerco di adattarlo a netbeans!

    TableModel sarebbe una table apposita per i db?
    No, http://java.sun.com/docs/books/tutor...able.html#data

    Se non passi nessun table model alla JTable, questa ne crea uno (appunto default table model).. è un pò un "tramite" tra i dati della tabella e l'oggetto.

    Puoi manipolare la tabella (JTable), i dati della tabella, aggiungere e rimuovere righe durante al runtime... Puoi utilizzare quello di default che è appunto DefaultTableModel oppure crearne uno tuo, ma questo dipende dalle tue esigenze, estendendo AbstractTableModel ed implementando i suoi metodi.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    163
    ho fatto questo:
    Codice PHP:
            try{
                
    String driver "org.apache.derby.jdbc.EmbeddedDriver";
                Class.
    forName(driver).newInstance();

                
    String protocol "jdbc:derby:zmovies;";
                
    Connection c DriverManager.getConnectionprotocol );

                
    Statement exe c.createStatement();
                
    ResultSet rs exe.executeQuery("SELECT * FROM movies;");
                
    ResultSetMetaData m rs.getMetaData();
                
                
    DefaultTableModel model = new DefaultTableModel();
                
    JTable jTable1 = new JTable(model);

                
    // Aggiungi le colonne "manualmente"
                
    model.addColumn("ID");
                
    model.addColumn("Titolo");
                
    model.addColumn("Genere");
                
    model.addColumn("Anno");
                
    model.addColumn("Regista");
                
    model.addColumn("Attori");
                
    model.addColumn("Copertina");
                
    model.addColumn("Conservato in");

                
    // Aggiungi le righe leggendo dal db;
                
    while(rs.next()) {
                  
    Vector<Stringrow = new Vector<String>();
                  
    row.addElement(rs.getString("ID"));
                  
    row.addElement(rs.getString("Titolo"));
                  
    row.addElement(rs.getString("Genere"));
                  
    row.addElement(rs.getString("Anno"));
                  
    row.addElement(rs.getString("Regista"));
                  
    row.addElement(rs.getString("Attori"));
                  
    row.addElement(rs.getString("Copertina"));
                  
    row.addElement(rs.getString("Archivio"));

                  
    model.addRow(row);
                }

                
    rs.close();
                
    exe.close();
                
    c.close();
            }
            catch (
    ClassNotFoundException e){ System.out.println(e); }
            catch (
    SQLException e){ System.out.println(e); }
            catch (
    InstantiationException e){ System.out.println(e); }
            catch (
    IllegalAccessException e){ System.out.println(e); }
        } 
    quando eseguo però non viene mostrata la tabella.

    domanda: row.addElement(rs.getString()) prende tutti i risultati e li converte in stringhe anche se vengono da campi di diverso tipo?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    quando eseguo però non viene mostrata la tabella.
    Come/dove mostri la tabella? Posta anche quella parte di codice

    domanda: row.addElement(rs.getString()) prende tutti i risultati e li converte in stringhe anche se vengono da campi di diverso tipo?
    nell'elenco di metodi qui descritti http://java.sun.com/j2se/1.5.0/docs/...ResultSet.html troverai la risposta

    Io comunque uso praticamente sempre quello (ma premetto che non so quanto sia corretto effettivamente).

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    163
    Come/dove mostri la tabella? Posta anche quella parte di codice
    Ripeto sto usando netbeans e non ho idea di dove sia quella parte di codice!


    nell'elenco di metodi qui descritti http://java.sun.com/j2se/1.5.0/docs.../ResultSet.html troverai la risposta
    Io comunque uso praticamente sempre quello (ma premetto che non so quanto sia corretto effettivamente).
    letta la documentazione: tutto chiaro!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.