使用facebook登录&与网站整合

时间:2016-06-05 07:37:04

标签: asp.net vb.net

我差不多要完成这个了。我从aspsnippets获取代码。刚添加了一些我的代码来检查条件。有两个按钮一个登录facebook&获取正在工作的信息然后在第二个按钮上单击它检查我的数据库中是否存在userid(从fb获取)?如果没有,则将其插入db。但是在执行结束时我得到了这个异常

MySql.Data.MySqlClient.MySqlException(0x80004005):已经有一个与此Connection关联的打开DataReader,必须先关闭它。在MySql.Data.MySqlClient.ExceptionInterceptor.Throw(例外的例外)在MySql.Data.MySqlClient.MySqlConnection.Throw(异常前)在MySql.Data.MySqlClient.MySqlCommand.Throw(异常前)在MySql.Data.MySqlClient.MySqlCommand .CheckState()在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(的CommandBehavior行为)在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()在login.Button1_Click(对象发件人,EventArgs e)如C:\用户\苏拉杰\桌面\ fbLoginTest \ login.aspx.vb:第43行

已更新

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)
                con.Open()
                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)
                con.Close()
            End Try
        Else
            Try
                Dim str1 As String = "INSERT INTO users (ID, DP, displayName) values('" + lblId.Text + "', '" + ProfileImage.ImageUrl.ToString + "', '" + lblName.Text + "')"
                Dim str2 As MySqlDataReader
                Dim adapter As New MySqlDataAdapter
                Dim command As New MySqlCommand
                command.CommandText = str1
                command.Connection = con
                adapter.SelectCommand = command
                str2 = command.ExecuteReader
                command.Dispose()
                con.Close()
            Catch ex As Exception
                Response.Write(ex)
            End Try
        End If
        End If
    End Sub 

1 个答案:

答案 0 :(得分:0)

您已经用以下方式打开了连接: Dim con As New MySqlConnection("Data Source="server";port=3306;Initial Catalog=db;User Id=user;password=password;") con.Open() 因此,从try..catch子句中删除con.Open()调用。