Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 必须先关闭与此连接关联的DataReader_Asp.net_Vb.net - Fatal编程技术网

Asp.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

谁能告诉我我的代码有什么问题吗?我是vb.net开发新手,因此在网上获取了一些参考代码&试图编写此代码,但出现了错误。请告诉我哪里做错了并更正我的代码

错误 已存在与此连接关联的打开的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
                    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. 请发布更正后的答案在页面右侧的“相关”面板中可以找到解决此问题的多种方法。通读一些,看看你是否能找到一个有效的。