Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Sapere quale dataReader è aperto
venerdì 21 aprile 2006 - 16.19
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
ven 21 apr 2006 - 16:19
Ciao a tutti,
è possibile, con qualche funzione, metodo ecc, sapere quali dataReader sono ancora aperti?
In pratica mi succede che, in alcune situazioni, il programma (sviluppato in vb .net 2003) mi dia un errore di dataReader già aperto (questo perchè provo ad aprire un dataReader ma, ovviamente, se non si chiude quello già aperto non si può fare), però non so quale sia (ce ne sono diversi e succede quando smanetto un po').
Il debug sarebbe troppo oneroso quindi mi chiedevo se esistesse un modo per conoscere quale dataReader sia, eventualmente, già aperto.
Grazie a tutti
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 21 apr 2006 - 16:44
Ovviamente quando apri un datareader con il metodo Read poi lo devi chiudere perchè è normale che quando vai a richiamare di nuovo l'apertura del datareader ti esce l'errore che il datareader è aperto...
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
ven 21 apr 2006 - 17:05
>Ovviamente quando apri un datareader con il metodo Read poi lo
>devi chiudere perchè è normale che quando vai a richiamare di
>nuovo l'apertura del datareader ti esce l'errore che il datareader
>è aperto...
>
>Ciao
>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>
http://blogs.dotnethell.it/fabiocirillo/
certo, a questo ci arrivo
Il fatto è che, probabilmente, mi sono dimenticato di chiuderlo da qualche parte o gestisco una catch senza chiuderlo.
Invece di fare il debug del programma (abbastanza lunghetto), speravo nell'esistenza di un metodo che mi permettesse di identificare un eventuale dataReader aperto
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
ven 21 apr 2006 - 18:14
Non mi risulta
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
ven 21 apr 2006 - 21:49
peccato
Grazie comunque
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 22 apr 2006 - 08:18
Se utilizzi la clausola Using (fw 2.0) il datareader dovrebbe venir chiuso automaticamente esempio:
Using myConn As new OleDbConnection
Using myCommand As new OleDbCommand
Using dr As DataReader = myCommand.ExecuteReader
While dr.Read()
End While
End Using
End Using
End Using
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
sab 22 apr 2006 - 11:40
>Se utilizzi la clausola Using (fw 2.0) il datareader dovrebbe
>venir chiuso automaticamente esempio:
>Using myConn As new OleDbConnection
> Using myCommand As new OleDbCommand
> Using dr As DataReader = myCommand.ExecuteReader
> While dr.Read()
> End While
> End Using
> End Using
>End Using
interessante, ci provo e vi faccio sapere.
Grazie
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
sab 22 apr 2006 - 13:59
ho risolto alla radice il problema,
invece di dichiarare e utilizzare, in diversi moduli e form, un datareader, ne ho messo uno in un modulo e reso pubblico.
Almeno sono certo che ne utilizzo uno alla volta e lo chiudo sempre
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
sab 22 apr 2006 - 14:11
Ma questo metodo è quello che di solito faccio anch'io..ops allora non ho capito bene al tua domanda, scusami tanto
Ciao alla prossima
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
sab 22 apr 2006 - 14:15
>Ma questo metodo è quello che di solito faccio anch'io..ops allora
>non ho capito bene al tua domanda, scusami tanto
>
>Ciao alla prossima
>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>
http://blogs.dotnethell.it/fabiocirillo/
ok, tutto a posto.
Ti ringrazio comunque per lo scambio di informazioni
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
sab 22 apr 2006 - 18:38
Nel forum al termine del post bisogna stabilere di accettare la risposta, è la prassi
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
lun 24 apr 2006 - 15:09
>Nel forum al termine del post bisogna stabilere di accettare
>la risposta, è la prassi
>
>Ciao
>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>
http://blogs.dotnethell.it/fabiocirillo/
hai ragione, mi spiace, ma prima volevo testare che tutto funzionasse.
A tal proposito mi togli una curiosità?
Ho, in un modulo la dichiarazione pubblica di due dataReader (myReader e myReader1)
Nell'evento click di un bottone di una form eseguo:
try
myReader.Close()
catch
end try
try
myReader1.Close()
catch
end try
myReader = myCommand.ExecuteReader ....
Bene, all'ultima riga (myReader=....) mi da un'errore "esiste già un dataReader aperto"
Ma com'è possibile?
Non ci sono altri dataReader all'infuori dei due indicati in alto; ma i try catch non dovrebbero, se ci fosse un dataReader aperto, chiuderlo?
Dove sbaglio?
Grazie
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
lun 24 apr 2006 - 18:52
>>Nel forum al termine del post bisogna stabilere di accettare
>>la risposta, è la prassi
>>
>>Ciao
>>Cirillo Fabio
>>www.wondernet.biz
>>fabio@wondernet.biz
>>
http://blogs.dotnethell.it/fabiocirillo/
>
>hai ragione, mi spiace, ma prima volevo testare che tutto funzionasse.
>A tal proposito mi togli una curiosità?
>Ho, in un modulo la dichiarazione pubblica di due dataReader
>(myReader e myReader1)
>
>Nell'evento click di un bottone di una form eseguo:
>try
> myReader.Close()
>catch
>end try
>try
> myReader1.Close()
>catch
>end try
>myReader = myCommand.ExecuteReader ....
>
>Bene, all'ultima riga (myReader=....) mi da un'errore "esiste
>già un dataReader aperto"
>Ma com'è possibile?
>Non ci sono altri dataReader all'infuori dei due indicati in
>alto; ma i try catch non dovrebbero, se ci fosse un dataReader
>aperto, chiuderlo?
>Dove sbaglio?
>
>Grazie
Prima di tutto ti consiglio sempre di inserire un messaggio di dopo il catch perchè così non capirai mai se esegue il try correttamente oppure c'è un'errore nel codice. Comunque potrebbe essere che hai un reader non chiuso su una form aperta contamporaneamente
ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
lun 24 apr 2006 - 21:04
>
>Prima di tutto ti consiglio sempre di inserire un messaggio di
>dopo il catch perchè così non capirai mai se esegue il try correttamente
>oppure c'è un'errore nel codice. Comunque potrebbe essere che
>hai un reader non chiuso su una form aperta contamporaneamente
>
>ciao
>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>
http://blogs.dotnethell.it/fabiocirillo/
il messaggio l'ho messo e mi da l'errore in una procedura richiamata dal bottone premuto. Pur essendo una form modale (quindi effettivamente c'è una form aperta in background) la form mi da errore solo in quel punto, nonostante prima faccia altro.
Ho provato a debuggare il tutto e non c'è verso di cavare nulla di interessante. In pratica io faccio (alla pressione del tasto)
1. apro un dataReader
2. Inserisco dei dati nel database
3. chiudo il dataReader
4. Apro un datareader
5. Eseguo altre cosucce sul db
6. Chiudo il dataReader
7. Lancio la procedura incriminata che prova (con try catch) a chiudere i due dataReader esistenti e apre il datareader per eseguire delle istruzioni sul db (e su questa ultima apertura da l'errore)
Aggiungo che la procedura in questione viene eseguita anche al load del form senza problemi
boh
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
lun 24 apr 2006 - 22:11
>>
>>Prima di tutto ti consiglio sempre di inserire un messaggio di
>>dopo il catch perchè così non capirai mai se esegue il try correttamente
>>oppure c'è un'errore nel codice. Comunque potrebbe essere che
>>hai un reader non chiuso su una form aperta contamporaneamente
>>
>>ciao
>>Cirillo Fabio
>>www.wondernet.biz
>>fabio@wondernet.biz
>>
http://blogs.dotnethell.it/fabiocirillo/
>
>il messaggio l'ho messo e mi da l'errore in una procedura richiamata
>dal bottone premuto. Pur essendo una form modale (quindi effettivamente
>c'è una form aperta in background) la form mi da errore solo
>in quel punto, nonostante prima faccia altro.
>Ho provato a debuggare il tutto e non c'è verso di cavare nulla
>di interessante. In pratica io faccio (alla pressione del tasto)
>1. apro un dataReader
>2. Inserisco dei dati nel database
>3. chiudo il dataReader
>4. Apro un datareader
>5. Eseguo altre cosucce sul db
>6. Chiudo il dataReader
ma se i datareader li chiudi ad ogni passaggio perchè devi eseguire un'altra chiusura?
>7. Lancio la procedura incriminata che prova (con try catch)
>a chiudere i due dataReader esistenti e apre il datareader per
>eseguire delle istruzioni sul db (e su questa ultima apertura
>da l'errore)
>
>Aggiungo che la procedura in questione viene eseguita anche al
>load del form senza problemi
>
>boh
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
mer 26 apr 2006 - 12:06
ho provato ad eliminare il secondo dataReader, adesso ne ho solo uno, quindi è impossibile che rimanga aperto un dataReader se prima lo chiudo.
try
myReader.Close()
catch
end try
myReader = myCommand.executeReader(.....)
ma mi continuava a dare errore di un dataReader ancora aperto
Alla fine ho risolto tutto in modo "ignobile" ma, almeno per ora, posso continuare (poi rivedrò tutto): ho chiuso la connessione al db e l'ho riaperta prima dell'apertura del reader. Così funziona
boh.
Grazie comunque
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 26 apr 2006 - 15:51
Sicuramente ti sfugge una parte di codice! ricontrolla in maniera + accurata e vedrai che troverai il datareader ancora perto da qualche parte..
Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
escaflowne
Profilo
| Junior Member
180
messaggi | Data Invio:
mer 26 apr 2006 - 17:44
si, sicuramente controllerò per bene (la soluzione è temporanea per non bloccarmi il lavoro) anche perchè la soluzione trovata è obbrobiosa.
Però, da come ho corretto il codice, mi meraviglia tanto che non funzioni.
Insomma, io ho un solo data reader in tutto il programma e lo chiudo con la try catch prima di aprirlo. Com'è possibile che ce ne sia un altro aperto? (Ho cercato anche con il search se ci sono altri dataReader e non ne ho trovati)
Grazie comunque
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 26 apr 2006 - 18:42
attenzione puoi anche averlo dichiarato con un altro nome e non te lo ricordi!
ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !