Asp.net 必须先关闭与此连接关联的DataReader
谁能告诉我我的代码有什么问题吗?我是vb.net开发新手,因此在网上获取了一些参考代码&试图编写此代码,但出现了错误。请告诉我哪里做错了并更正我的代码 错误 已存在与此连接关联的打开的DataReader,必须先关闭该连接Asp.net 必须先关闭与此连接关联的DataReader,asp.net,vb.net,Asp.net,Vb.net,谁能告诉我我的代码有什么问题吗?我是vb.net开发新手,因此在网上获取了一些参考代码&试图编写此代码,但出现了错误。请告诉我哪里做错了并更正我的代码 错误 已存在与此连接关联的打开的DataReader,必须先关闭该连接 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If Not String.IsNullOrEmpty(lblId.Text) Then
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Not String.IsNullOrEmpty(lblId.Text) Then
Dim query As String = "Select ID, email From users where ID=@id"
con.Open()
Dim cmd As New MySqlCommand(query, con)
cmd.Parameters.AddWithValue("@id", lblId.Text)
Dim dr As MySqlDataReader = cmd.ExecuteReader()
If dr.HasRows Then
'Do Login Code here
Try
Dim str As String = "select * from users where ID='" + lblId.Text + "';"
Dim cmd2 As New MySqlCommand(str, con)
Dim da As New MySqlDataAdapter(cmd2)
Response.Cookies("User_Type").Value = "users"
Response.Cookies("chkusername").Value = lblId.Text
Response.Redirect(Request.Url.AbsoluteUri)
Catch ex As Exception
Response.Write(ex)
End Try
Else
Try
Dim str1 As String = "INSERT INTO users (ID, DP, displayName) values('" + lblId.Text + "', '" + ProfileImage.ImageUrl.ToString + "', '" + lblName.Text + "')"
Dim adapter As New MySqlDataAdapter
Dim command As New MySqlCommand
command.CommandText = str1
command.Connection = con
adapter.SelectCommand = command
command.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex)
End Try
End If
End If
con.Close()
End Sub
所以没有人给我解决办法,我试着从我自己的角度来解决。因此,人们建议关闭data reader,但这是我的问题,因为我是一名新开发人员,所以我需要在哪里关闭data reader。在执行命令之前,我在else子句中关闭了datareader
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Not String.IsNullOrEmpty(lblId.Text) Then
Dim query As String = "Select ID, email From users where ID=@id"
con.Open()
Dim cmd As New MySqlCommand(query, con)
cmd.Parameters.AddWithValue("@id", lblId.Text)
Dim dr As MySqlDataReader = cmd.ExecuteReader()
If dr.HasRows Then
'Do Login Code here
Try
Dim str As String = "select * from users where ID='" + lblId.Text + "';"
Dim cmd2 As New MySqlCommand(str, con)
Dim da As New MySqlDataAdapter(cmd2)
Response.Cookies("User_Type").Value = "users"
Response.Cookies("chkusername").Value = lblId.Text
Response.Redirect(Request.Url.AbsoluteUri)
Catch ex As Exception
Response.Write(ex)
End Try
Else
Try
Dim str1 As String = "INSERT INTO users (ID, DP, displayName) values('" + lblId.Text + "', '" + ProfileImage.ImageUrl.ToString + "', '" + lblName.Text + "')"
Dim adapter As New MySqlDataAdapter
Dim command As New MySqlCommand
dr.Close()
command.CommandText = str1
command.Connection = con
adapter.SelectCommand = command
command.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex)
End Try
End If
End If
con.Close()
End Sub
堆栈社区现在变得最糟糕。版主们很傲慢,所以没有人给我解决方案,我试着自己解决。因此,人们建议关闭data reader,但这是我的问题,因为我是一名新开发人员,所以我需要在哪里关闭data reader。在执行命令之前,我在else子句中关闭了datareader
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If Not String.IsNullOrEmpty(lblId.Text) Then
Dim query As String = "Select ID, email From users where ID=@id"
con.Open()
Dim cmd As New MySqlCommand(query, con)
cmd.Parameters.AddWithValue("@id", lblId.Text)
Dim dr As MySqlDataReader = cmd.ExecuteReader()
If dr.HasRows Then
'Do Login Code here
Try
Dim str As String = "select * from users where ID='" + lblId.Text + "';"
Dim cmd2 As New MySqlCommand(str, con)
Dim da As New MySqlDataAdapter(cmd2)
Response.Cookies("User_Type").Value = "users"
Response.Cookies("chkusername").Value = lblId.Text
Response.Redirect(Request.Url.AbsoluteUri)
Catch ex As Exception
Response.Write(ex)
End Try
Else
Try
Dim str1 As String = "INSERT INTO users (ID, DP, displayName) values('" + lblId.Text + "', '" + ProfileImage.ImageUrl.ToString + "', '" + lblName.Text + "')"
Dim adapter As New MySqlDataAdapter
Dim command As New MySqlCommand
dr.Close()
command.CommandText = str1
command.Connection = con
adapter.SelectCommand = command
command.ExecuteNonQuery()
Catch ex As Exception
Response.Write(ex)
End Try
End If
End If
con.Close()
End Sub
堆栈社区现在变得最糟糕。版主傲慢您对两个嵌套命令使用相同的连接。据我所知,MySql需要两个独立的连接在同一个连接中执行任何其他SQL命令(
select*from users..,INSERT INTO users…
)之前,必须关闭DataReader。@Steve你能给出正确的答案吗please@AlexB. 请发布更正后的答案在页面右侧的“相关”面板中可以找到解决此问题的多种方法。通读一些,看看是否能找到一个有效的。两个嵌套命令使用相同的连接。据我所知,MySql需要两个独立的连接在同一个连接中执行任何其他SQL命令(select*from users..,INSERT INTO users…
)之前,必须关闭DataReader。@Steve你能给出正确的答案吗please@AlexB. 请发布更正后的答案在页面右侧的“相关”面板中可以找到解决此问题的多种方法。通读一些,看看你是否能找到一个有效的。