Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ComboBox da query

  1. #1

    ComboBox da query

    Ciao a tutti devo scrivere un programma in Java e son arrivato ad un punto e non riesco a capire come deo continuare.....
    Praticamente io attraverso una query ad un database vorre che i risultati venissero inseriti in una comboBox...
    da questo sito
    ho visto che esiste un costruttore del defaultComboboxmodel che come parametro prende un Vettore che è appunto ciò che mi restituisce la query ma poi al posto di aggiungermi le strighe mi aggiunge una cosa strana tipo "legnth@" e altre cose incomprensibili....come devo fare???

    Grazie a tutti CIAO

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ComboBox da query

    Originariamente inviato da orion1983
    ho visto che esiste un costruttore del defaultComboboxmodel che come parametro prende un Vettore che è appunto ciò che mi restituisce la query ma poi al posto di aggiungermi le strighe mi aggiunge una cosa strana tipo "legnth@" e altre cose incomprensibili....come devo fare???
    Se non si imposta per il JComboBox un ListCellRenderer specifico che faccia qualunque altra cosa, il renderer di "default" si limita ad invocare il toString() sull'oggetto fornito dal ComboBoxModel per ottenere la stringa da visualizzare.

    Evidentemente gli elementi nel tuo Vector non sono oggetti java.lang.String (o altro tipo con un toString() significativo) ma qualcos'altro (e cosa lo puoi sapere solo tu ....).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho scoperto qual'è il mio vero problema....
    Non ho capito perchè il mio vettore al posto di essere:

    elemento[0]--> quello che interessa a me
    elemento[1]--> quello che interessa a me
    elemento[2]--> quello che interessa a me
    :
    :

    è

    elemento[0]
    elemento[0] --> Quello ce interessa a me
    elemento[1]
    elemento[0] --> quello che interessa a me
    :
    :
    E' come se fosse un Array bidimensionale il che mi andrebbe anche bene ma con un Vectr come faccio ad indicare la posizione dell'elemento che mi interessa all'interno?

    Ciao, grazie e buon Anno a tutti!

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Posta il codice dove aggiorni, modifiche e crei il tuo Vector, in modo che si possa vedere dove duplichi i dati.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  5. #5
    Eccolo...
    codice:
       public Vector eseguiQuery(String query) {
          Vector v = null;
          String [] record;
          int colonne = 0;
          try {
             Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
             ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
             v = new Vector();
             ResultSetMetaData rsmd = rs.getMetaData();
             colonne = rsmd.getColumnCount();
    
             while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
                record = new String[colonne];
                for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
                v.add( (String[]) record.clone() );
             }
             rs.close();     // Chiudo il ResultSet
             stmt.close();   // Chiudo lo Statement
          } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
    
          return v;
       }

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da orion1983
    Eccolo...
    codice:
       public Vector eseguiQuery(String query) {
          Vector v = null;
          String [] record;
          int colonne = 0;
          try {
             Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
             ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
             v = new Vector();
             ResultSetMetaData rsmd = rs.getMetaData();
             colonne = rsmd.getColumnCount();
    
             while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
                record = new String[colonne];
                for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
                v.add( (String[]) record.clone() );
             }
             rs.close();     // Chiudo il ResultSet
             stmt.close();   // Chiudo lo Statement
          } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
    
          return v;
       }
    Perchè fai il clone?
    Assegna semplicemente i dati senza neppure fare il cast di tipo....
    Ps, ma che jdk usi?
    Se 5 o 6 ti consiglio vivamente di usare una Collection tipizzata!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  7. #7
    Be allora se ho capito cosa intendi convene che riscrivo il metodo in modo che restituisca un array di String ad esempio così:
    codice:
     public String[] doQuery(String query) {
          String[] ris = null;
          String [] record;
          int colonne = 0;
          try {
             Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
             ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
             rs.last();
             int lunghezza = rs.getRow();
             ris = new String[lunghezza];
             rs.first();
             for(int i = 0; i < lunghezza; i++){
                 ris[i] = rs.getString(i+1);
             }
    
             rs.close();     // Chiudo il ResultSet
             stmt.close();   // Chiudo lo Statement
          } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
    
          return ris;
       }

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    No no....devi semplicemente scrivere
    codice:
    while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
                record = new String[colonne];
                for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
                v.add( record );
             }
    ...
    Tutto qui, non server fare niente d'altro.
    Poi quando fai l'estrapolazione fai il cast di tipo a String[].

    Per quanto riguarda java 5 o 6 le Come Collection puoi anche creare un bean ad HOC e fare un ArrayList<tuoBean>;

    se vuoi maggiori informazioni in merito chiedi!!
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    Anche correggendo così
    codice:
    while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
                record = new String[colonne];
                for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
                v.add( record );
             }
    da lo stesso problema....

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.