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
ASP.NET 1.0/1.1
Datareader aperto
venerdì 01 luglio 2005 - 15.05
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
ven 1 lug 2005 - 15:05
Mi trovo ora con questo problema
Da una pagina che non fa assolutamente uso di datareader chiama questa dove il codice iniziale è:
Dim conn As MySqlConnection = CType(getStrConnection("conn"), MySqlConnection)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cmd As MySqlCommand
Dim dr As MySqlDataReader
If Not Page.IsPostBack Then
Session.Remove("dt")
If Request.QueryString("op") = "Edit" Then
Try
cmd = New MySqlCommand(String.Format(sqlSelectCliente, Request.QueryString("codice")), conn)
conn.Open()
dr = cmd.ExecuteReader()
If dr.Read() Then
Quando eseguo dr = cmd.ExecuteReader() mi scatta l'eccezione
there is already an open datareader associated with this connection which must be closed first.
Ma se nella pagina precedente non utilizzo nessun datareader come è possibile?
Come faccio a risolvere o verificare dove può stare qualche datareader aperto?
Ciao
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
ven 1 lug 2005 - 15:26
Ciao..a livello di codice io verificherei che ogni volta che apri una Datareader con cmd.ExecuteReader, poi alla fine lo richiudi correttamente.
Se invece hai altre procedure intere che utilizzano datareader stai attento alle connessioni..ho notato che non usi una connessione locale per la tua procedura Load, ma crei una variabile Private..
non è detto che l'errore sia un datareader aperto, ma può anche essere che veda un altro datareader associato a quella connessione..
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
ven 1 lug 2005 - 16:28
Dim conn As MySqlConnection = CType(getStrConnection("conn"), MySqlConnection)
è una dichiarazione che faccio in tutte le pagine ASPX in testa.
Oltreutto ho controllato che in tutti i datareader del mio progetto venga eseguito l'overload del executereader per fare in modo che venga chiusa sempre la connessione.
Se vuoi ti posso mandare il file in allegato e puoi vedere tu...
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
ven 1 lug 2005 - 17:28
Hai ragione, il codice sembra a posto, chiudi ogni volta correttamente il Dr.
Prova a fare un controllo anche prima di eseguire il fatidico executereader, per vedere se effettivamente Dr è già aperto, o se puoi escludere questa causa..se non è aperto sicuramente devi controllare la connessione..
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
ven 1 lug 2005 - 17:35
prima di eseguire
cmd = New MySqlCommand
Conn istanziato ma chiuso
cmd NOTHING
dr NOTHING
Appena la eseguo ho
Conn istanziato ma chiuso
cmd instanziato
dr NOTHING
Dopo aver eseguito conn.open ho
Conn aperta
cmd.ExecuteReader() con l'eccezione
dr.NOTHING
temerario
Profilo
| Junior Member
58
messaggi | Data Invio:
ven 1 lug 2005 - 20:17
una cosa molta strana che ho notato è questa.
Mi sono creato una paginetta esterna al progetto ed ho eseguito le classi istruzione di connessione
Dim conn As MySqlConnection = CType(getStrConnection("conn"), MySqlConnection)
Dim cmd As New MySqlCommand
Dim dr As MySqlDataReader
If Not Page.IsPostBack Then
Try
cmd = New MySqlCommand("....", conn)
conn.Open()
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
If dr.Read() Then
dim prova as string = dr(0)
dim prova1 as string = dr(1)
dr.close()
Catch exc As MySqlException
....
Finally
If (Not (dr Is Nothing)) AndAlso (dr.IsClosed = False) Then
dr.Close()
End If
conn.Close()
End Try
end if
Se vado a impostare come espressione di controllo cmd.ExecuteReader mi scatta l'eccezione in fase di debug. Se eseguo senza debug... va bene.
All'interno del progetto invece l'eccezione scatta anche in esecuzione normale.
L'ecceziione è sempre la stessa:
Generata eccezione in fase di esecuzione:System.InvalidOperationException - Connection must be valid and open
Ma come posso fare?
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 !