Newsgroup: it.comp.java
Titolo: Problema query nested

Ciao a tutti,
ho il seguente problema che non riesco a risolvere,
in un metodo dove eseguo il ciclo di un resultset ho 
una serie di altrimetodi che ha loro volta eseguono delle
query con i valori del resultset che sto ciclando, ecco uno spaccato del
codice:
protected void updateDestination(Connection c, ResultSet rset) 
			throws SQLException {
        PreparedStatement pstmt = null;
        ResultSet intRset = null;
        try {
	        while(rset.next()) {
	            int id = rset.getInt("codicecliente");
 
	            if(rset.getString("flagK").equals("L")) {
	                try {
	                    this.update(c, id); // SIA QUI
	                    this.countDeleteL++;
	                } catch(Exception e) {
	                    this.countDeleteLNotFound++;
	                }
	            } else if(rset.getString("flagK").equals("I")) {
	                this.insert(c, rset); // SIA QUI
	                this.countInsert++;
	<cut>
protected void update(Connection c, int id) throws SQLException {
    	PreparedStatement pstmt = null;
    	try {
	    	pstmt = this.getUpdateStatement(c);
	        pstmt.setInt(1, id);
	        pstmt.execute();
 
	        if( pstmt.getUpdateCount() != 1) {
	            throw new SQLException("no update found");
	        } 
	        pstmt.close();
        } catch(SQLException e) {
            e.printStackTrace();
        }
    }
Il tutto mi restituisce il seguente 
errore:
java.sql.SQLException: Streaming result set
com.mysql.jdbc.RowDataDynamic@1b9ce4b is still active. Only one streaming
result set may be open and in use per-connection. Ensure that you have
called .close() on  any active result sets before attempting more queries.
Grazie per l'aiuto,
cris.

 utilizzarle.
Ok grazie mille ho risolto con un Connection pool ma ora ho un altro
problema! :(
Eseguendo il ciclo precedentemente citato mysql mi da questo problema
| Query   | 163  | Writing to net | SELECT * FROM <tabella>
E rimane li all'infinito!?
Consideranto che la tabella per il test contiene 90.000 record 
ma in produzione ne avra' almeno 200.000
Ho letto in giro che questo problema e' causato da una configurazione di
rete non corretta e possibile che il problema sia da qualche altra parte?
grazie.

 grazie.
Prima di tirare conclusioni affrettate, prova a limitare il numero di record
che ti viene restituito dalla query (in MySql aggiungi LIMIT 50 in fondo
alla statement per recuperare solo i primi 50 record). Se funziona, prova
con limiti un po' più grandi. Se effettivamente noti dei rallentamenti
marcati allora può trattarsi davvero di un'errata configurazione di rete.
Potrebbe sembrarti poco elegante, ma può esserti d'aiuto anche scrivere in
una console testuale (System.out.println) una riga o un carattere per ogni
record elaborato durante il recupero del resultset, così da poter "toccare
con mano" l'effettiva velocità del trasferimento.
Poi, sinceramente non ho idea di quanto siano grossi effettivamente i
singoli record...
Ah, per ultimo controlla che il server su cui gira MySql non sia troppo
"impegnato" in altro (è probabile se sta girando sulla stessa macchina su
cui sviluppi)
-- 
Fermiamo Scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx/
 - 
http://www.xenu.net/
(per rispondere personalmente leva IlDitoDalCulo)



Il driver JDBC (mysql) ti sta dicendo esattamente qual'č il problema: con il
DB Engine che stai utilizzando *devi* chiudere il resultset e la statement
"SELECT" da cui stai prelevando i record *prima* di eseguire una "UPDATE"
sulla stessa connessione. Altri DB Engine potrebbero permetterti di creare
piů statement SELECT/UPDATE sulla stessa connessione, ma evidentemente la
versione di MySql che stai usando non lo permette.
Una soluzione potrebbe essere quella di aprire una seconda connessione
(eventualmente usa un pool manager) su cui creare la/le statement di UPDATE.
Ricordati sempre di chiudere le risorse non appena hai finito di
utilizzarle.
-- 


 cui sviluppi)
No, e' un'altra macchina che comunque e' abbastanza tranquilla,
anzi ora provo proprio a farlo girare sulla mia e vediamo se migliora!
Grazie di tutto.

 anzi ora provo proprio a farlo girare sulla mia e vediamo se migliora!
Niente! e' una carrozza anche sulla mia macchina!
inizio a dubitare del driver di mysql l'estrazione dello stesso
quantitativo di record da un sql server con le jtds va a 1500 record ogni
2 sec~