|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
[JAVA] risultati query in una combobox e jtextfield
espongo i due problemi sperando in una vostra risposta:
1) voglio elencare in OGNI RIGA di una combobox cognomi e nomi relativi a dei medici. Sono riuscito a farlo per i cognomi soltanto (o nomi soltanto) ma non entrambi. Questo è quello che dovrei modificare: //dal form dove ho la combobox faccio la chiamata alla classe Database che contiene le funzioni (penso che vada bene) Database db = new Database(); Public Vector medico; ..... medico= db.elenco_medici(); for (int i=0; i<medico.size();i++){ Combo_dottori.addItem(medico.get(i));} //questa è la funzione nella classe Database Vector elenco_medici (){ Vector ris = new Vector(); ris.add("vuoto"); String q = null; String errore = avvia(); q = "SELECT `cognome_medico` FROM `medico`"; try { Statement st = connessione.createStatement(); ResultSet rs = st.executeQuery(q); if (rs.isBeforeFirst()) { ris.removeAllElements(); ris.add("Tutti i medici");} else { ris.removeAllElements(); ris.add(errore); } while (rs.next()) { ris.add(rs.getString("cognome_medico")); } }catch (Exception e) { //SE VIENE GENERATA UN SQLException LA RESTITUISCO AL CLIENT PER INFORMARLO ris.removeAllElements(); ris.add(e.toString()); } return ris; } La query per restituire anche i nomi dei medici è semplice (basta aggiungere `nome_medico` dopo il SELECT) ma come modifico la funzione per mettere nome e cognome nella stessa riga??? 2)Devo settare come testo di alcune jTextField i risultati di una query...in pratica mi serve il corrispettivo per le query di quello ke faccio nella combobox cosi: for (int i=0; i<medico.size();i++){ Combo_dottori.addItem(medico.get(i));} spero di essere stato chiaro.....altrimenti chiedete pure... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Una volta recuperato da database il resultset con i nomi e cognomi dei dottori, nella combobox non dovrai fare altro che inserire la stringa corrispondente a nome + cognome.
Non ho capito bene dove hai difficoltà, nel codice.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
io ho provato cosi:
Vector elenco_medici (){ Vector ris = new Vector(); ris.add("vuoto"); String q = null; String errore = avvia(); q = "SELECT `cognome_medico` `nome_medico` FROM `medico`";//NUOVA QUERY try { Statement st = connessione.createStatement(); ResultSet rs = st.executeQuery(q); if (rs.isBeforeFirst()) { ris.removeAllElements(); ris.add("Tutti i medici");} else { ris.removeAllElements(); ris.add(errore); } while (rs.next()) { ris.add(rs.getString("cognome_medico")); ris.add(rs.getString("nome_medico"));//AGGIUNTA } }catch (Exception e) { //SE VIENE GENERATA UN SQLException LA RESTITUISCO AL CLIENT PER INFORMARLO ris.removeAllElements(); ris.add(e.toString()); } return ris; } ma non va |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
"Non va" non è molto specifico...
Cos'è che non va? Posta almeno gli errori che ti sputa in output e proviamo a capire cosa c'è che "non va"
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
scusa non avevo il programma sotto....mi da errore javaSQLException...non trova la colonna `cognome_medico`, eppure con la funzione scritta nel primo post la trova, con solo cognome_medico nella query.
edit:spostando il nome prima del cognome nella query e in ris.add non trova la colonna `nome_medico` Ultima modifica di serpico84 : 30-03-2009 alle 21:23. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Il passo che ti manca sarebbe, documentazione alla mano (o a video Codice:
q = "SELECT `cognome_medico`, `nome_medico` FROM `medico`";//NUOVA QUERY
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
si!! grazie mille come al solito errori banali....x quanto riguarda il punto 2)??
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Con calma e in modo chiaro, postando anche del codice se lo ritieni opportuno (nel qual caso ti invito ad usare gli appositi tag CODE, per non perdere l'identazione).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
non ho ancora fatto codice perchè non so come fare. Quello che devo fare è ricevere in varie jtextfield il risultato di una query (salvata sempre su vettore, tramite relativa funzione), un po come ho fatto con la combo medico
Codice:
for (int i=1; i<medico.size();i=i+2){
Lista_dottori.addItem((String)medico.get(i-1)+" "+medico.get(i));}
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quindi hai già:
il vettore di oggetti (String?) generato a partire dal result set della query. Vuoi fare questo: tramite diversi JTextField visualizzare tutti gli oggetti (String?) presenti nel vettore. Domanda: Se devi utilizzare un JTextField per ogni oggetto nel vettore dei risultati della query, significa che devi istanziarne dinamicamente il numero? (nel senso che a priori non sai quanti oggetti hai nel vettore risultato, e in base a quel numero devi creare il corrispettivo numero di JTextField)? Ho capito bene? Nel caso la risposta fosse affermativa, ti chiedo ma ha senso usare proprio dei JTextField? 1) Se devo solo visualizzare i risultati (String) di una query e non devo permettere all'utente di editare i risultati mostrati JTextField non è neccessario; si potrebbe usare invece JLabel. 2) se devo visualizzare una lista di risultati di una query forse è meglio usare un componente che prenda in input il contenuto di tutto il vettore di risultati e li mostri tutti, invece che instanziare un componente per ogni risultato. Anche perchè facciamo questa considerazione: se la query genera 350 String come risultato, cosa facciamo? Istanziamo dinamicamente nella finestra 350 JTextField per mostrarle all'utente? E se le String fossero 1000? Detto questo, potresti invece anche avere buone ragioni che ti hanno spinto a fare questa scelta, nel qual caso ignora completamente le osservazioni che ho postato. Ciao
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 342
|
ti rispondo in modo breve poichè ho poco tempo ora....inserisco il codice fiscale su una text field, tramite un bottone faccio partire la query che controlla se quel codice fiscale è già presente nel DB, se si riempe i campi textfield dei dati del paziente (rimangono però oscurati cioè non editabili), se no i campi si attivano e quindi posso inserire i dati del paziente (che è un paziente nuovo). Per le altre cose ti rispondo stasera. Grazie per il supporto!!
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Allora la cosa è semplice: - numero di JTextField fisso, uno per ogni campo di un record/result della query. La query torna un result set; Il result set o contiene 1 record/result, oppure ne contiene zero; Siccome dobbiamo popolare il testo di JTextField a noi interessano oggetti String quindi quando leggi ogni campo del result set trasformi il valore letto in String che piazzi in un vettore [metodo più banale: String s = "" + valoreResultSet.getQualcosa()]. Finito di leggere il result set hai un vettore di string che contiene: - zero elementi se la query non ha trovato nessun risultato con quel codice fiscale. - un numero di elementi pari al numero di campi del result set letto se la query ha trovato l'unico result possibile per quel codice fiscale. Nel primo caso (vettore di string di lunghezza zero) abiliti tutti i JTextField [metodo .setEnable(true)]; nel secondo caso (vettore di string di lunghezza maggiore di zero : [vector.size() > 0]) disabiliti tutti i JTextField [metodo .setEnable(false)] e li popoli con i valori del vettore [metodo .setText(String) da chiamare sul JTextField desiderato passandogli la String appropriata] Ciao
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:24.




















