Newsgroup: it.comp.java
Titolo: System.out.println dopo while (nn funziona)

Ho un metodo, che funziona correttamente, ora ho avuto necessità di
usare un while per iterare su tutte le righe di una colonna del
ResultSet rs e ottenere l'array. Ora vorrei sapere se l'array viene
creato correttamente quindi stamparlo ma la funzione
System.out.println() è completamente ignorata, anche se metto una
stringa al posto della variabile (ad es. DENTRO e FUORI). Se commento
il while il System.out.println() funziona correttamente.
Cosa c'è di errato?
=================================
private void formWindowOpened(java.awt.event.WindowEvent evt)
{
          ResultSet rs=mdbc.inviaQuery("select * from ....
where ...");
        try {
            rs.next();
            // ...
            txtNome.setText(rs.getString("NOME"));
            // ...
            int i = 0;
            String[] sin = new String[1];
            while(!rs.isLast()) {
                sin[i] = rs.getString("TELEFONO");
                i++;
                System.out.println("DENTRO");
            }
            System.out.println("FUORE");
        } catch (SQLException ex) {
             //ECCEZIONE
        }
        mdbc.close(rs);
    }
=================================

Non capisco bene cosa dovrebbe fare il tuo codice, metti qualche riga di
commento.
Cmq quando dici che funziona tutto correttamente (senza println) cosa ti
ritorna? Funziona anche con piu' records?

 rete.
Ho risolto il problema del print. Ora però resta il problema
dell'assegnazione dei valori, ho cercato su internet come scorrere un
result set, e a questa pagina ho trovato informazioni utili
http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/resultset.html
 .
Quindi ho modificato il mio codice, ma quando stampo il valore mi dice
TELEFONO: null, senza però nessun tipo di errori o eccezioni, cosa
sbaglio ancora? Ah il ResultSet se può essere utile è di tipo
TYPE_SCROLL_INSENSITIVE e CONCUR_READ_ONLY. Questo è l'ennesima
modifica al codice:
    private void formWindowOpened(java.awt.event.WindowEvent evt)
{
     ResultSet rs=mdbc.inviaQuery("select * ...");
        try {
            // ...
            int i = 0;
            String[] sin = new String[1];
            rs.beforeFirst();
            while(!rs.next()) {
                sin[i] = rs.getString("TELEFONO");
                i++;
            // ...
            }
            System.out.println("TELEFONO: "+sin[0]);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
            mdbc.close(rs);
    }

 sbaglio ancora? 
La riga "while(!rs.next())" significa "per tutto il tempo che rs non ha 
un prossimo elemento". Credo tu voglia togliere il "!" :)
E poi ti becchi un bel ArrayIndexOutOfBoundException perche' la 
variabile "i" e' maggiore della dimensione dell'array "sin" :)


Grazie mille....
Come faccio a conoscere il numero di righe di un ResultSet?

> Come faccio a conoscere il numero di righe di un ResultSet?
Non ti serve, lo scorri.

 Non ti serve, lo scorri.
Intendo:
ArrayList numeri
while (rs.next)
    numeri.add(rs.getString("TELEFONO"))
Ah, attenzione a chiudere ResultSet e Statement una volta esaurita la query,
anche se viene lanciata una SQLE!

 anche se viene lanciata una SQLE!
A questo proposito, solitamente e' Cosa Buona e Giusta (tm) inserire la 
chiusura in un finally.


Risolto, grazie a tutti per l'aiuto.