[asp.NET/MySql] open Datareader zonder datareader te hebben

Pagina: 1
Acties:

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
Hey Allemaal,

Ben bezig met een klein projecte wat ik had gemaakt met .NET i.c.m. MsSql om te zetten zodat het gebruik maakt van MySql.
Dus, MySql 5 op de testpc, MySql connector geinstalleerd (ook de DLL in de bin map van de website gezet) en gegevens overgezet. Dit lijkt allemaal te werken met testcode, hier ben ik zeker van.

Nu heb ik alleen een probleem waar ik niet uit kom.
Ik heb echt al heel goed gezocht op Google enzo, daar vind ik wel mijn foutmelding maar al die oplossing werken niet en lijken me zelfs niet van toepassing.
Elke gevonden website wijst me dus op het feit dat MySql anders werkt dan MsSql (duh :Y) ) echter is de oplossing die ze noemen vaak het gebruik van meerder commands.

De foutmelding is dus als volgt;
There is already an open DataReader associated with this Connection which must be closed first.

Ok dacht ik dan haal ik even alle andere onderdelen die naar de database gaan uit de code en voer ik alleen even het deel uit waarbij het fout gaat, zelfde melding.
Ook geprobeerd om dan maar een DataReader te legen voor gebruik van het stukje code, zelfde melding.

Kost me nu al 2 dagen, mede door het feit dat ik nog niet zo ver ben met het geheel.

Hieronder het stukje code van toepassing;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Imports System.Data
Imports MySql.Data.MySqlClient

Partial Class calendar_index
    Inherits System.Web.UI.Page

    Dim myconnection As MySqlConnection
    Dim myda As MySqlDataAdapter
    Dim ds As New DataSet

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cs As String = "server=localhost; user id=root; password=mijnpw; database=mijndb;"
        myconnection = New MySqlConnection(cs)

End Sub

    Protected Sub CalendarDRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)

        'Kijken of de dag wel van deze maand is
        'en of het niet de geselecteerde dag is
        If (Not e.Day.IsOtherMonth) And (Not e.Day.Date.Equals(Calendar1.SelectedDate)) Then

            'De dag van vandaag nemen en tot het einde van deze dag nemen
            Dim EDayStart As Date = e.Day.Date
            Dim EDayEind As Date = EDayStart.AddDays(1)

            '////////////////////Afspraken ophalen//////////////////////////////////////////////////////////////////

            myda = New MySqlDataAdapter("Select StartDatumTijd, EindDatumTijd, MedewerkerNr from TBLafspraken WHERE (StartDatumTijd >= '" & EDayStart & "' AND StartDatumTijd < '" & EDayEind & "')" & AllMwSqlStr & ";", myconnection)
            myda.Fill(ds, "TblAfspraken")

            Dim dr As DataRow

            Dim TotaalTijdVerschil As Long
            Dim TijdVerschil As Long

            'Door alle gevonden afspraken lopen
            For Each dr In ds.Tables("TblAfspraken").Rows

                'If EventDate is not Null
                If Not dr("StartDatumTijd") Is DBNull.Value Then

                    'nu we weten dat de calendardag een afspraak heeft gaan we kijken hoe vol deze dag zit
                    Dim StartTijd As Date = CType(dr("StartDatumTijd"), Date)
                    Dim EindTijd As Date = CType(dr("EindDatumTijd"), Date)

                    'Het verschil tussen de afspraken in minuten
                    TijdVerschil = DateDiff(DateInterval.Minute, StartTijd, EindTijd)

                    'De totale verschiltijd
                    TotaalTijdVerschil = (TotaalTijdVerschil + TijdVerschil)

                    'einde controle op geen gevonden afspraken
                End If

        'de dataset leegmaken om weer opnieuw te kunnen beginnen
        ds.Clear()

    End Sub

End Class


Kan iemand me helpen?
Alvast bedankt! _/-\o_

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
p.s. de error verwijst naar de regel;
myda.Fill(ds, "TblAfspraken")

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Waar definieer en open jij jouw MySqlConnection?
Het zou namelijk best kunnen dat er al een andere DataAdapter bezig is met lezen en dat je tegelijkertijd met deze ook probeert te lezen.
Wat je zou kunnen proberen is de MySqlConnection eerst te sluiten en dan opnieuw te openen voordat je met je DataAdapter aan de gang gaat.

Edit:
Hij roept trouwens iets over een DataReader, check even of je er daar nog ergens 1 van rond hebt lopen die nog niet ge Close()'d is.

[ Voor 18% gewijzigd door MTWZZ op 17-02-2006 13:48 ]

Nu met Land Rover Series 3 en Defender 90


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
mhh als ik het volgende stukje uit mijn SQL haal werkt het wel, maar natuurlijk pakt hij dan niet de juist gegevens uit de database.
Dus naar mijn idee ziet hier dan de fout in;
WHERE (StartDatumTijd >= '" & EDayStart & "' AND StartDatumTijd < '" & EDayEind & "')" & AllMwSqlStr & "

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Heb je dan ook al de volledige query in phpmyadmin geplakt om te kijken of het daar ook fout gaat? Als zonder de WHERE begint en deze stukje bij beetje uitbreidt zie je vanzelf waar het precies op fout gaat.

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
als ik ervan maak;
"Select StartDatumTijd, EindDatumTijd, MedewerkerNr from TBLafspraken WHERE (StartDatumTijd >= '2006-02-15 00:00:00' AND StartDatumTijd < '2006-02-15 18:00:00');"
Doet ie het wel ik geef nu dus de waarden EDayStart en EDayEind zelf op.

Het lijk er dus op dat
code:
1
2
            Dim EDayStart As Date = e.Day.Date
            Dim EDayEind As Date = EDayStart.AddDays(1)

de verkeerde waarden ophalen/doorgeven. Waarschijnlijk is de verkregen datum uit het calendar component verkeerd voor MySql(DATETIME).
Iemand een oplossing?

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Heb je nu dan al gekeken, met een breakpoint bijvoorbeeld, hoe de datum in de query gezet wordt? Op je variabelen zal je waarschijnlijk nog een ToString() functie los moeten laten, eventueel met een parameter om het juiste formaat aan te geven.

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
met
code:
1
2
3
4
5
6
7
            'De dag van vandaag nemen en tot het einde van deze dag nemen
            Dim EDayStart As Date = e.Day.Date
            Dim EDayEind As Date = EDayStart.AddDays(1)

            'temp
            Label1.Text = EDayStart
            Label2.Text = EDayEind

krijg ik; 2/28/2006 3/1/2006
Dat lijken dus 3 dagen meer te zijn terwijl AddDays er maar 1 bevat :X

code:
1
(StartDatumTijd >= '2006-02-15' AND StartDatumTijd < '2006-02-16')

werkt gewoon goed, maar dan is het niet meer dynamisch. Ik snap er nu niet meer veel van.
Btw naar ToString() gekeken, maar dat lijkt ook niet veel te doen, of ik doe het verkeerd.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Predje schreef op vrijdag 17 februari 2006 @ 17:22:
krijg ik; 2/28/2006 3/1/2006
Dat lijken dus 3 dagen meer te zijn terwijl AddDays er maar 1 bevat :X
Ehm gast kijk eens op een kalender :D

Nu met Land Rover Series 3 en Defender 90


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
MTWZZ schreef op vrijdag 17 februari 2006 @ 17:29:
[...]

Ehm gast kijk eens op een kalender :D
en goede morgen :D
Door de frustratie begin ik gewoon problemen te zien die er niet zijn ;)

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
we zijn inmiddels hierbij aanbeland
code:
1
2
3
4
5
            Dim EDayStart As Date = e.Day.Date
            Dim EDayEind As Date = EDayStart.AddDays(1)

            Dim EdayStartNew As String = EDayStart.ToString("yyyy-MM-dd")
            Dim EDayEindNew As String = EDayEind.ToString("yyyy-MM-dd")


Krijg de nu calendar te zien met de juiste datum gevult. lijkt dus te werken.
Is dat wel de beste manier?

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Dit is een goede manier. Nog beter is misschien ToString(u). Kijk hier voor de mogelijkheden.

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
cowgirl schreef op vrijdag 17 februari 2006 @ 22:07:
Dit is een goede manier. Nog beter is misschien ToString(u). Kijk hier voor de mogelijkheden.
Dit had ik al geprobeerd maar dat is geen optie omdat addDays() alleen gebruik kan maken van een DATE en niet van een STRING. Vandaag dat ik pas na het toevoegen van de dagen alle DATE`s om kan zetten naar STRING`s

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10-04 16:47

gorgi_19

Kruimeltjes zijn weer op :9

Predje schreef op vrijdag 17 februari 2006 @ 17:53:
we zijn inmiddels hierbij aanbeland
code:
1
2
3
4
5
            Dim EDayStart As Date = e.Day.Date
            Dim EDayEind As Date = EDayStart.AddDays(1)

            Dim EdayStartNew As String = EDayStart.ToString("yyyy-MM-dd")
            Dim EDayEindNew As String = EDayEind.ToString("yyyy-MM-dd")


Krijg de nu calendar te zien met de juiste datum gevult. lijkt dus te werken.
Is dat wel de beste manier?
De boel zal ws alleen gaan crashen als je een andere UICulture krijgt.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
gorgi_19 schreef op zondag 19 februari 2006 @ 10:52:
[...]

De boel zal ws alleen gaan crashen als je een andere UICulture krijgt.
Kun je me uitleggen waarom? In mijn ogen zet ik namelijk gewoon een vaste datum-layout vast. Deze converteert dat toch gewoon altijd naar hetzelfde, waarvan maakt dan toch niet uit?
(yyyy-dd-mm > yyyy-dd-mm of dd-mm-yyyy > yyyy-dd-mm) dat moet toch allemaal gewoon werken.

Tevens bij ik in een ander topic bezig om de culture van de applictatie gewoon vast te zetten, misschien dat dat ook veel problemen kan verhelpen.
Pagina: 1