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

    [java + NetBeans] Riempire un JTable con dati SQL

    salve,


    sto passando dalla programmazione... "dattilografica".. a quella design di NetBeans...

    Ma troppe cose non riesco a capire..

    Di default quando creo un progetto Netbeans, mi genera una bella finestra: Frame, con un pannello, un menubar e un statuspanel.

    Ottimo.

    Allora io vado sulla "paletta" degli oggetti e inserirsco una bella JTable.

    Quindi pigio "Source" piuttosto che "Design", scorro il codice.. ma non trovo JTable, meno che la sua dichiarazione "private javax.swing.JTable jTable1".

    EDIT: perfetto... sempre orbo in questi giorni...
    Ho capito che NetBeans di default, a SX del foglio con il codice ha delle piccole "+" e "-" che raccolgono e nascondo parte del codice...
    Aprendo "private void initComponents()" ho trovato la mia roba... e la JTable.

    Avanti.


    In questa situazione quindi, come faccio per riempire la tabella con i dati che pesco dal database.

    So perfettamente come aprire la connessione e riceve i dati di una query su uno "statement" si chiama? quella cosa li...

    Ma poi? come popolo la tabella? :berto:

  2. #2
    codice:
    jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, null, null, null, null, null},
            {null, null, null, null, null, null, null, null},
            {null, null, null, null, null, null, null, null},
            {null, null, null, null, null, null, null, null}
        },
        new String [] {
            "Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7", "Title 8"
        }
    ));
    8 colonne, tante righe...


    dovrei prendere quindi.. "String[]" e leggere i titoli delle colonne della tabella.

    dovrei quindi prendere la "SELECT *" e mettere dentro i dati nella Objetc[] ?



    helpino

  3. #3
    non ci capisco più una tegolina...

    ho trovato sull IDE Netbeans, Services -> Databases

    ho aggiunto un collegamento al database SQL2005

    ma....



    ... se vado su ADVANCED -> selected schema... mi aspetto di poter selezionare una tabella...

    invece leggo una lista di utenti.. del DB SQLServer..

    ??????????

  4. #4
    lasciando perdere il post appena sopra....

    ho fatto direttamente a mano

    codice:
               Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                 String connectionUrl = "jdbc:sqlserver://ced-sql:1433;" + "databaseName=magazzinoricambi;user=sa;password=xxxxxxx;"; 
                 Connection con = DriverManager.getConnection(connectionUrl);
                 st=con.createStatement();
                 r=st.executeQuery("SELECT * FROM dbo.tblMagazzinoRicambi");

    vorrei appunto mettere in una jtable tutti i dati di una tabella...

    (poi.. seguiranno i dati che vorrò solo...).


    nn so come fare

  5. #5
    hmmm...

    ho trovato che...

    codice:
                jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {"aa", "bb"},
                    {"cc", null}
                },
                     new String [] {
                    "Titolaccio", "Titolo2"     
                }
            ));

    in questa maniera, può andar bene, la jTable si popola.

    Ma a questo punto.. come si popola con una Tabella di un database???????????????????





    un aiutooooo

  6. #6
    non c'è proprio nessuno...


    codice:
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                 String connectionUrl = "jdbc:sqlserver://ced-sql:1433;" + "databaseName=magazzinoricambi;user=sa;password=xxxxx;"; 
                 Connection con = DriverManager.getConnection(connectionUrl);
                 st=con.createStatement();
                 r=st.executeQuery("SELECT * FROM dbo.tblMagazzinoRicambi");   
                 
                 int riga=0;
                 while(r.next())
                    {
                       for(int i=0; i<8; i++)
                       {
                            jTable1.setValueAt(r.getString(i+1),riga,i);
                       }
                       riga++;
                    }
    in questa maniera scrivo correttamente il contenuto nelle celle...

    poi?

    come scrivo invece il nome (titolo) delle colonne sulle colonne? prelevandolo sempre dalla dabella?


    PS: altra cosa.. mi sembra un pò troppo dispendioso una tecnica del genere.. quando dovrò operare su milioni di righe.. ci sarà un operazione facilitata?

  7. #7
    continuo sempre io...

    codice:
    private void cambiaNomeColonna(JTable tabella, int numero_colonna, String titolo_colonna){
        tabella.getColumnModel().getColumn(numero_colonna).setHeaderValue(titolo_colonna);
      }
    MI spiegate perchè con questa funzione il nome della colonna viene cambiato MA SOLO DOPO aver cliccato sopra la jTable?

    ho la chiamata della funzione all'interno dell' ActionPerformed di jbutton1 che si occupa anche di riempire la tabella..



    forse serve un refresh automatico della stessa?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Dopo ogni cambiamento che riguardi la grafica va sempre richiamato un validate() sul container che contiene l'oggetto modificato.

    Consiglio anche una forzatura con repaint() e doLayout() in sequenza.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    ah!

    mainPanel.validate();
    mainPanel.repaint();
    mainPanel.doLayout();


    mitico

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.