Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    20

    Popolare combobox da Database

    ciao a tutti, come a titolo vorrei popolare una jcombobox in modo dinamico da un DB sql.
    In pratica ho una tabella FORNITORI con nome e ID e vorrei fare in modo che nella mia combobox compaiano i nome dei fornitori ma vorrei anche che mi riesca a "portare dietro" l'ID in modo da utilizzarlo successivamente; non è necessario che compaia anche quello nella combobox.

    Per ora ho scritto questo codice ma non credo sia corretto:
    (Per ora ho messo che metodo viene eseguito quando si apre la combobox)


    codice:
    private void jComboBoxFornitoripActionPerformed(java.awt.event.ActionEvent evt) {                                                    
            // TODO add your handling code here:
            try{
            PreparedStatement ps_fornitore=null;
            ps_fornitore = conn.prepareStatement("SELECT * from fornitore order by nome");
            java.sql.ResultSet rs_fornitore = ps_fornitore.executeQuery();
                    while (rs_fornitore.next()){
                         String valori = rs_fornitore.getString("nome");
                         jComboBoxFornitorip.addItem(valori);
                     }
                    
            }catch (SQLException ex) {
                Logger.getLogger(MainRigeneraManager.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    Inoltre non so quando riempire la combobox, conviene riempirla subito all'avvio del programma oppure magari riempirla quando viene aperto il menu a discesa?

    Grazie a tutti per l'aiuto, premetto che ho seguito orsi di Java e altra programmazione quindi qualcosa so ma è la prima volta che provo a cimentarmi in un progetto così "complesso" (per me)
    Ultima modifica di LeleFT; 13-05-2014 a 13:15 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovas91 Visualizza il messaggio
    vorrei anche che mi riesca a "portare dietro" l'ID in modo da utilizzarlo successivamente; non è necessario che compaia anche quello nella combobox.
    Allora invece di avere oggetti String nel combobox, dovresti avere oggetti di una tua classe che "modella" come minimo l'insieme di nome (String) e ID (quello che è per te ... non so).
    Poi quello che viene visualizzato negli elementi del combobox è semplicemente il risultato del toString() sugli oggetti della tua classe, quindi basta ridefinire toString() per restituire es. solo il nome.

    Quote Originariamente inviata da Giovas91 Visualizza il messaggio
    Inoltre non so quando riempire la combobox, conviene riempirla subito all'avvio del programma oppure magari riempirla quando viene aperto il menu a discesa?
    Dipende molto da quanto sono "variabili" quei dati nella tabella e dai requisiti che hai definito o ti sono stati richiesti.

    Comunque sappi che non è una buona/bella cosa mixare così codice di accesso a DB e codice di accesso alla interfaccia grafica (anche se è solo per aggiungere ad un combobox).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    20
    Prima di tutto grazie per la risposta rapidissima
    Intendi che quindi mi conviene utilizzare la classe Fornitore, quindi creo un Array di Fornitori e di ognuno stampo il nome ad esempio mentre l'ID me lo tengo semplicemente senza utilizzarlo e andando a prenderlo solamente dolo la selezione. Giusto?
    Più o meno scrivendo:
    while(fornitori.next()){
    XXXXXXXXXXXXfornitori.toString("Nome")}

    cosa dovrei mettere al posto delle XXX per far si che il nome vada nella lista della mia combobox?

    Inoltre cosa intendi per: "
    Comunque sappi che non è una buona/bella cosa mixare così codice di accesso a DB e codice di accesso alla interfaccia grafica (anche se è solo per aggiungere ad un combobox)."?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovas91 Visualizza il messaggio
    Prima di tutto grazie per la risposta rapidissima
    Intendi che quindi mi conviene utilizzare la classe Fornitore, quindi creo un Array di Fornitori e di ognuno stampo il nome ad esempio mentre l'ID me lo tengo semplicemente senza utilizzarlo e andando a prenderlo solamente dolo la selezione. Giusto?
    Più o meno scrivendo:
    while(fornitori.next()){
    XXXXXXXXXXXXfornitori.toString("Nome")}

    cosa dovrei mettere al posto delle XXX per far si che il nome vada nella lista della mia combobox?
    Innanzitutto la query dovrà essere tale da estrarre tutti i campi che ti servono. Appunto ID e nome, come hai chiesto.
    Poi che tu usi la tua classe Fornitore oppure ne fai un'altra specifica per questo scenario (es. FornitoreComboItem) .... è indifferente, per il combobox. L'importante è che contenga le proprietà che ti servono. E il toString() della classe deve semplicemente fornire il testo che sarà visualizzato nel combobox. Tutto qui.

    Quote Originariamente inviata da Giovas91 Visualizza il messaggio
    Inoltre cosa intendi per: "
    Comunque sappi che non è una buona/bella cosa mixare così codice di accesso a DB e codice di accesso alla interfaccia grafica (anche se è solo per aggiungere ad un combobox)."?
    È una questione di "design" ... se non hai ancora la visione giusta su questi aspetti ... ok, pazienza. Ma man mano che andrai avanti in Java, è bene che prendi coscienza su queste cose, cercando di capire bene dove mettere il codice, come separare i concetti e altre cose del genere.
    Perché altrimenti in progetti magari un po' più grossi di quello che stai facendo, se non strutturi bene le cose è molto facile che la cosa ti "sfugga di mano" ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    20
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto la query dovrà essere tale da estrarre tutti i campi che ti servono. Appunto ID e nome, come hai chiesto.
    Poi che tu usi la tua classe Fornitore oppure ne fai un'altra specifica per questo scenario (es. FornitoreComboItem) .... è indifferente, per il combobox. L'importante è che contenga le proprietà che ti servono. E il toString() della classe deve semplicemente fornire il testo che sarà visualizzato nel combobox. Tutto qui.


    È una questione di "design" ... se non hai ancora la visione giusta su questi aspetti ... ok, pazienza. Ma man mano che andrai avanti in Java, è bene che prendi coscienza su queste cose, cercando di capire bene dove mettere il codice, come separare i concetti e altre cose del genere.
    Perché altrimenti in progetti magari un po' più grossi di quello che stai facendo, se non strutturi bene le cose è molto facile che la cosa ti "sfugga di mano" ....
    perfetto sono riuscito a risolvere come mi hai detto tu.

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.