Newsgroup: it.comp.java
Titolo: problema iterazione risultati ResulSet

Salve....sono un novello di questo gruppo....ed ho un piccolo
problema.
Ho una applicazione web fatta in Java. Nel mio db ho inserito un campo
che contiene l'url di di file e faccio delle interrogazioni per
risalire al url corretto specificato dall'utente. Ovvero l'utente mi
chiede l'url "pippo" ed io controllo se "pippo" c'è nel mio db e se sì
gli resituisco "pippo"......insomma faccio un controllo d'integrità.
Non capisco perchè ma se faccio:
           ResultSet rs1 = stmt.executeQuery("SELECT url FROM
Dischi");
           while(rs1.next())
            {
                ur = rs1.getString("url");
                if(ur.equals(indirizzo))
                {
                   break;
                }
            }
non mi restituisce niente di niente.....ed il campo indirizzo contiene
effettivamente cosa l'utente mi ha passato tramite pagina jsp.
Se invece ipotizzo che la stringa che cerco è alla seconda posizione
del mio db e faccio:
         ResultSet rs1 = stmt.executeQuery("SELECT url FROM Dischi");
         rs1.next();
         rs1.next();
         ur = rs1.getString(indirizzo);
         if(ur.equals(url))
         break;
allora il tutto mi funziona correttamente......ovvero la stringa viene
trovata e ripassata.
Onestamente non vedo l'errore?!!! Qualcuno può aiutarmi?!!!
Grazie!!!


Senti fai cosi'... vuoi sapere se esiste una tupla nel db contenete il
valore "pippo" nel campo url della tabella pippo?
Allora :
 ResultSet rs1 = stmt.executeQuery("SELECT url FROM Dischi where
url='pippo' ");
boolean presente = rs1.next();
Non credo ti convenga fare altro che cio...

 Non credo ti convenga fare altro che cio...
Ti ringrazio per il suggerimento....appena posso metto in
pratica...però onestamente non vedo l'errore ne mio codice e questo
come sai bene rende molto perplessi su quello che uno fa :-)....mi
spieghi anche la seconda istruzione....perchè  presente = rs1.next()?
così non mi punta alla successiva di quella effettivamente
trovata?!...no forse ho detto una cacchiata....rs1 punta a quella
prima della prima trovata e si deve mandarlo avanti....giusto?
Cmq se riesci anche a darmi una spiegazione del perchè il mio non
funziona mi sollevi da un esaurimento!!!!!
Grazie!!!!!!!


Allora, come avrai notato il ho aggiunto una clausola where alla query
quindi il result set avra' un numero ri righe pari alle righe della
tabella che soddisfano il tuo test (ovvero con pippo nella colonna
url).
L'istruzione boolean presente = rs1.next(); in questo caso ha il
significato di "presente vale true se e solo se esiste almeno una riga
che contiene pippo nel campo url, false altrimenti".
Piu' in generale quello che volevo dirti e che se cerchi una riga in
una tabella di un db che soddisfi una (o piu' condizioni) l'approccio
corretto e' aggiungere una clausola where alla query (e quindi far
fare il controllo delle condizioni al db) e non chiedere al db tutte
le righe di una tabella e poi su ognuna di esse eseguire il test
all'interno del codice java. Questo e' molto molto importante.
Tornando al tuo codice dovresti postare un po' piu' roba per capeire
bene le differenze tra le due versioni...


Grazie sei stato esaurientissimo e chiarissimo e anche se non ho
provato sono sicuro che funzionerà!!!!!
Grazie mille!!!
ho anche un altro dubbio su exec per aprire un porgramma....ma forse è
meglio aprire un altro post....
Ciao

 Ciao
Si :-)


Il fatto è che io il Java comincio a masticarlo ora....fino ad ora C, C
++, C#
Grazie ancora e ....buon divertimento! :-)


uhm.....non mi funziona nulla.....
ho messo:
ResultSet rs1 = stmt.executeQuery("SELECT url FROM Dischi where
url=urlo ");
            boolean presente = rs1.next();
            if(presente)
                ur = "BBB";//rs1.getString("url");
            else
                ur = "AAA";
e non vedo stampato nulla.....eppure  in urlo c'è la stringa corretta
presente nel db!!


Errore SQL, devi mettere fra singoli apici la parola 'urlo':
"SELECT url FROM Dischi where url='urlo'");
Non capisco pero' il senso della query, mi sembra sbagliata. Che senso 
ha cercare un campo che già sai? Prova a spiegare bene cosa vuoi fare.
Ciao,
     Bruno
P.S.
Occhio ai meeting del JUG Torino!
http://www.jugtorino.it/meeting
-- 
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
| Coordinatore del JUG Torino - 
http://www.jugtorino.it