我有这个奇怪的错误,我找不到解决方案。我有一个函数,每当我必须在数据库中插入数据时我就会调用它。它实际上工作,因为当我检查数据库条目时,它们实际上在那里。
然而,我有这个恼人的错误“已经有一个开放的数据阅读器与连接有关,必须关闭”。我找不到一种方法来阅读它。
这是功能:
Sub InputDataValues(ByVal StrQwery As String)
Try
myconn.Open()
Dim stquery As String = StrQwery
Dim smd As MySqlCommand
smd = New MySqlCommand(stquery, myconn)
smd.ExecuteReader()
smd.ExecuteReader().Close()//I added this when I wanted to get rid if the mistake
myconn.Close()
Catch ex As Exception
Dim ErrorMessage As String = "alert('" & ex.Message.ToString() & "');"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", ErrorMessage, True)
myconn.Close()
End Try
myconn.Close()
End Sub
这就是我在代码中多次调用它的方式:
InputDataValues(StrQwery)
如果有人给我一个提示,我将非常感激。
当我将其更改为ExecuteNonQuery
时,这就是它的样子Sub InputDataValues(ByVal StrQwery As String)
Try
myconn.Open()
Dim stquery As String = StrQwery
Dim retValue As Integer
Dim smd As MySqlCommand
smd = New MySqlCommand(stquery, myconn)
retValue = smd.EndExecuteNonQuery()
myconn.Close()
Catch ex As Exception
Dim ErrorMessage As String = "alert('" & ex.Message.ToString() & "');"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", ErrorMessage, True)
myconn.Close()
End Try
myconn.Close()
End Sub
答案 0 :(得分:0)
您可以使用ExecuteNonQuery替换ExecuteReader,因为您只是插入数据。 在你的同志中,我的猜测是你每次拨打ExecuteReader都会得到一个新的读者,所以你应该在你创建的第一个上面调用close。