MySqlDataReader

mercoledì 03 agosto 2011 - 22.09
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  MySQL 5.1

Mau67 Profilo | Expert

Ciao al forum,
da giorni che impazzisco per un errore nel mio MySqlDataReader in pratica dice che il DataReader deve essere chiuso, il datareader è chiuso credo sia un problema di MySQL non so più cosa fare.

Grazie in anticipo
Mau67

Gho5t Profilo | Junior Member

potresti postare il codice che utilizzi così da cercare di capire se c'è un'errore o se è un bug?
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

Mau67 Profilo | Expert

Ecco il codice

Dim myCommand = New MySqlCommand("SELECT AttoOperativa.ID," & _
"Sum(If(Servizi.Tipo='UM',Servizi.Anni,0)) AS Aum," & _
"Sum(If(Servizi.Tipo='UM',Servizi.Mesi,0)) AS Mum," & _
"Sum(If(Servizi.Tipo='UM',Servizi.Giorni,0)) AS Gum," & _
"Sum(If(Servizi.Tipo='CA',Servizi.Anni,0)) AS Aca," & _
"Sum(If(Servizi.Tipo='CA',Servizi.Mesi,0)) AS Mca," & _
"Sum(If(Servizi.Tipo='CA',Servizi.Giorni,0)) AS Gca," & _
"Sum(If(Servizi.Tipo='EC',Servizi.Anni,0)) AS Aec," & _
"Sum(If(Servizi.Tipo='EC',Servizi.Mesi,0)) AS Mec," & _
"Sum(If(Servizi.Tipo='EC',Servizi.Giorni,0)) AS Gec," & _
"Sum(If(Servizi.Tipo='SU',Servizi.Anni,0)) AS Asu," & _
"Sum(If(Servizi.Tipo='SU',Servizi.Mesi,0)) AS Msu," & _
"Sum(If(Servizi.Tipo='SU',Servizi.Giorni,0)) AS Gsu," & _
"Sum(If(Servizi.Tipo='TA',Servizi.Anni,0)) AS Ata," & _
"Sum(If(Servizi.Tipo='TA',Servizi.Mesi,0)) AS Mta," & _
"Sum(If(Servizi.Tipo='TA',Servizi.Giorni,0)) AS Gta," & _
"Sum(If(Servizi.Tipo='FA',Servizi.Anni,0)) AS Afa," & _
"Sum(If(Servizi.Tipo='FA',Servizi.Mesi,0)) AS Mfa," & _
"Sum(If(Servizi.Tipo='FA',Servizi.Giorni,0)) AS Gfa," & _
"Sum(If(Servizi.Tipo='PA',Servizi.Anni,0)) AS Apa," & _
"Sum(If(Servizi.Tipo='PA',Servizi.Mesi,0)) AS Mpa," & _
"Sum(If(Servizi.Tipo='PA',Servizi.Giorni,0)) AS Gpa" & _
" FROM AttoOperativa INNER JOIN Servizi ON AttoOperativa.IDAnagrafica = Servizi.IDAnagrafica" & _
" WHERE ((Servizi.Al)<='" & ConvertData.GetDataForMySql(id.SubItems(1).Text) & "')And ((Servizi.IDAnagrafica)='" & TextBox31.Text & "') And ((AttoOperativa.ID)='" & id.Text & "')" & _
" GROUP BY AttoOperativa.ID", Connection)


Dim dr As MySqlDataReader = myCommand.ExecuteReader
While dr.Read()


Dim gg As Integer = dr.GetInt32(12)
Dim mm As Integer = dr.GetInt32(11)
Dim aa As Integer = dr.GetInt32(10)

Dim AnniSu As Integer = aa
Dim MesiSu As Integer = mm
Dim GiorniSu As Integer = gg

CalculateTime(gg, mm, aa)

gg = dr.GetInt32(6)
mm = dr.GetInt32(5)
aa = dr.GetInt32(4)

Dim AnniCa As Integer = aa
Dim MesiCa As Integer = mm
Dim GiorniCa As Integer = gg

CalculateTime(gg, mm, aa)


strSQL = "SELECT AttoOperativa.ID, " & AnniCa & " AS Aca, " & MesiCa & " AS Mca, " & GiorniCa & " AS Gca," & _
"" & AnniSu & " AS Asu, " & MesiSu & " AS Msu, " & GiorniSu & " AS Gsu" & _
" FROM AttoOperativa INNER JOIN Servizi ON AttoOperativa.IDAnagrafica = Servizi.IDAnagrafica where AttoOperativa.IDAnagrafica = '" & m_ParametroCodiceFiscale & "' AND AttoOperativa.ID ='" & id.Text & "'And Servizi.Dal <= '" & ConvertData.GetDataForMySql(id.SubItems(1).Text) & "' GROUP BY AttoOperativa.ID"

daT1 = New MySqlDataAdapter(strSQL, Connection)
daT1.Fill(dtsAtto, "Totali")


End While

dr.Close()

Next
Mau67

alx_81 Profilo | Guru

>Ecco il codice
Ciao, puoi postare anche l'errore e la riga dove si verifica andando in debug?
Grazie
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Mau67 Profilo | Expert

Ciao Ecco l'errore

daT1 = New MySqlDataAdapter(strSQL, Connection)
daT1.Fill(dtsAtto, "Totali") <<<<<<<<<<<<<<<<<<<<<<<<QUI mi da il problema "There is already an open DataReader associated with this Connection which must be closed first."
non so più cosa fare non c'è ne sono datareader aperti

Mau67

Gho5t Profilo | Junior Member

Il problema dovrebbe dipendere dal fatto che tu utilizzi la stessa MysqlConnection ("Connection") sia per il DataReader ("dr") sia per MySqlDataAdapter ("daT1")... prova ad usare due MysqlConnection diverse e dovrebbe funzionare...


Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

alx_81 Profilo | Guru

>Il problema dovrebbe dipendere dal fatto che tu utilizzi la stessa
>MysqlConnection ("Connection") sia per il DataReader ("dr") sia
>per MySqlDataAdapter ("daT1")... prova ad usare due MysqlConnection
>diverse e dovrebbe funzionare...
Sì, credo sia quello, però cerca di usare le Using, così come descritto verso la fine di questo post:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=38489


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

marco.morgia Profilo | Junior Member

Ciao,

se ancora non hai risolto prova a farlo chiudere in automatico dall'applicazione il DataReader.

Premetto che programmo in C#, ma penso che il comando sia identico

MySqlDataReader reader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnecetion);


command ovviamente è la tua query mySql
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5