Fehler zeigen, Es ist bereits ein geöffneter DataReader zugeordnet diesen Befehl, der zuerst geschlossen werden
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer = 0
str = "select Vote from vote where party='Green'"
cmd = New SqlCommand(str, con)
con.Open()
dr = cmd.ExecuteReader()
if dr.HasRows Then
dr.Read()
n = dr("Vote").ToString()
n = n + 1
Label8.Text = n.ToString()
End If
str = "update Vote set vote='" + n.ToString() + "' where party='Green'"
cmd = New SqlCommand(str, con)
cmd.ExecuteNonQuery()
dr.Read()
cmd.Dispose()
con.Close()
End Sub
- Entsorgen
dr
auch am Ende.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Botschaft scheint zu sein, ziemlich klar. Haben Sie zum schließen des DataReader, bevor Sie versuchen zu verwenden, die Anschluss für eine weitere operation
MSDN sagt
Durch die Art und Weise, den ganzen code kann vereinfacht werden, mithilfe einer ExecuteScalar um die Letzte Abstimmung Wert und Abladen der DataReader
In diesem Szenario verwenden Sie eine Globale connection-Objekt, und dies vermieden werden sollte. Denken Sie daran, dass es immer besser ist, zu erstellen, zu öffnen, verwenden und vernichten die Verbindung, wenn Sie brauchen, um es zu benutzen. Der SqlClient-Klassen nutzen könnte, die Verbindungs-Pooling Infrastruktur, die könnte helfen, eine Menge in der Verwaltung wertvolle Ressourcen wie eine Verbindung
Add multiple active Resultsets, die zu Ihrem Verbindungs-string, wie unten gezeigt
Beispiel: