Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    2

    popolare jcombobox regioni in base all'item selezionato dalla jcombo province

    Ciao a tutti !
    Allora sto creando una Java application.
    Ho caricato la lista delle province in una Jcombobox (caricate dal DB Derby tabella province).Questa combobox si carica automaticamente all'avvio del programma (ho inserito il codice nel "customize code" della GUI di netbeans).
    Per poplare automaticamente la combo con le regioni ho usato questo codice:
    codice:
    try{                     String driver = "org.apache.derby.jdbc.ClientDriver";         String url="jdbc:derby://localhost:1527/DBRubrica";         String uname="DBRubrica";//la passw è uguale        String sqlreg="SELECT REGIONE FROM DBRUBRICA.REGIONI,DBRUBRICA.PROVINCE WHERE SIGLA="+CB_Prov.getSelectedItem().toString()+"AND ID_REGIONE=ID_REG";                                          Class.forName(driver).newInstance();                 Connection cn;                 cn=(Connection)DriverManager.getConnection(url,uname,uname);                         ResultSet rsreg;                         Statement stmreg;                         stmreg=(Statement) cn.createStatement();                         PreparedStatement pstmreg;                         pstmreg=(PreparedStatement) cn.prepareStatement(sqlreg);                         rsreg=(ResultSet) pstmreg.executeQuery();                         while (rsreg.next()){                             CB_Regione.setSelectedItem(rsreg.getString("REGIONE"));                                                         // CB_Regione.addItem();                             }                         rsreg.close();                                  }                  catch (Exception e) {         JOptionPane.showMessageDialog(CB_Regione,"errore TBREGIONE");                  }
    ma non funziona...ho provato l'sql direttametne sulle due tabelle (cioè direttamente dalla finestra sql di netbeans) e funziona (cioè,se al posto di
    codice:
    CB_Prov.getSelectedItem().toString()
    scrivo 'TN' ,una provincia a caso insomma) il codice mi restituisce la regione corretta.....
    invece da codice java no mi da l'errore che ho nel catch....

    qualcuno sa aiutarmi ?

    Le tabelle sono così:

    TABELLA REGIONI:
    ID_REG (chiave primaria)
    REGIONE
    TABELLA PROVINCE:
    ID (chiave primaria)
    ID_REGIONE
    ID_PROVINCIA
    SIGLA

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Potresti utilizzare i tag in modo migliore.
    Il tuo codice qui riportato, era illeggibile.
    codice:
    	try{                     
    		String driver = "org.apache.derby.jdbc.ClientDriver";         
    		String url="jdbc:derby://localhost:1527/DBRubrica";         
    		String uname="DBRubrica";//la passw è uguale        
    		String sqlreg="SELECT REGIONE FROM DBRUBRICA.REGIONI,DBRUBRICA.PROVINCE WHERE SIGLA="+CB_Prov.getSelectedItem().toString()+"AND ID_REGIONE=ID_REG"; 
    		Class.forName(driver).newInstance();                 
    		Connection cn;                 
    		cn=(Connection)DriverManager.getConnection(url,uname,uname);                         
    		ResultSet rsreg;                         
    		Statement stmreg;                         
    		stmreg=(Statement) cn.createStatement();                         
    		PreparedStatement pstmreg;                         
    		pstmreg=(PreparedStatement) cn.prepareStatement(sqlreg);                         
    		rsreg=(ResultSet) pstmreg.executeQuery();                         
    		while (rsreg.next()){                             
    			CB_Regione.setSelectedItem(rsreg.getString("REGIONE"));                                                         
    			// CB_Regione.addItem();                             
    		} 
    		rsreg.close();                                  
    	}                  
    	catch (Exception e) {
    		JOptionPane.showMessageDialog(CB_Regione,"errore TBREGIONE");
    	}
    Venendo al codice, due indicazioni :
    1) Mancano gli apici :
    la parte : SIGLA="+CB_Prov.getSelectedItem().toString()+"AND
    dovrebbe essere SIGLA=' "+CB_Prov.getSelectedItem().toString()+" ' AND
    (Devi togliere gli spazi che ho inserito per evidenziare gli apici)

    2) Probabilmente al posto di getSelectedItem() dovresti utilizzare getSelectedValue()
    Nota che getSelectedValue() ritorna un Object e quindi devi eseguire il cast o utilizzare il toString() (ma per quest'ultima opzione non sono sicuro).
    Ciao, Brainjar

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    2
    Ciao, per la parte che mi hai suggerito tu al punto 1, quando compilo mi da questo errore:

    /home/****/NetBeansProjects/Rubrica/src/my/Rubrica/Rubrica.java:432: error: unclosed character literal
    String sqlreg="SELECT REGIONE,ID_REG,ID_REGIONE,SIGLA FROM DBRUBRICA.REGIONI,DBRUBRICA.PROVINCE WHERE SIGLA="'"+CB_Prov.getSelectedItem().toString()"';
    /home/****/NetBeansProjects/Rubrica/src/my/Rubrica/Rubrica.java:432: error: unclosed string literal
    String sqlreg="SELECT REGIONE,ID_REG,ID_REGIONE,SIGLA FROM DBRUBRICA.REGIONI,DBRUBRICA.PROVINCE WHERE SIGLA="'"+CB_Prov.getSelectedItem().toString()"';
    2 errors
    /home/****/NetBeansProjects/Rubrica/nbproject/build-impl.xml:915: The following error occurred while executing this line:
    /home/****/NetBeansProjects/Rubrica/nbproject/build-impl.xml:268: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 0 seconds)

    PS: Considera che uso Derby ed ha una sintassi leggermente diversa dal normale MySql...


    Per quanto riguarda invece la parte 2, in java non esiste il getSelectedValue per le jComboBox..esistono solo il getSelectedItem (che restituisce un Object), il getSelctedItem[] (che restituisce un array di Object) ed il getSelectedIndex (che restituisce un intero)

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Gli apici che devi mettere sono singoli ' tu invece hai usato i doppi " .......
    E pensare che te l'ho pure scritto in modo da fartelo capire ....
    Guarda/leggi/capisci con più attenzione ...


    Mancano gli apici :
    la parte : SIGLA="+CB_Prov.getSelectedItem().toString()+"AND
    dovrebbe essere SIGLA=' "+CB_Prov.getSelectedItem().toString()+" ' AND
    (Devi togliere gli spazi che ho inserito per evidenziare gli apici)
    Ciao, Brainjar

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.