首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic登录

Visual Basic登录
EN

Stack Overflow用户
提问于 2013-10-21 05:03:51
回答 1查看 295关注 0票数 0

有人能帮我吗?我的登录有点问题。当我尝试登录时,我会得到错误“多步OLE DB操作生成的错误。如果可用,请检查每个OLE DB状态值。没有完成任何工作。”-与ExecuteScalar检索连接。

预先感谢您的任何帮助,您可能会或可能无法给我。

代码语言:javascript
复制
 Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click

    If String.IsNullOrWhiteSpace(txtUsername.Text) Then
        Invalid()
        Exit Sub
    End If

    Using con As New OleDbConnection(connectionString)
        Dim cmd As New OleDbCommand("Select count(*) From tblAccounts where Username = ?", con)
        cmd.Parameters.AddWithValue("Username", txtUsername)
        con.Open()

        If CType(cmd.ExecuteScalar(), Integer) > 0 Then
            cmd.CommandText = "Select CPassword From tblAccounts Where Username = ?"
            Dim matches As String = CType(cmd.ExecuteScalar(), String)
            If matches = Sha1(txtPassword.Text) Then
                Response.Redirect("main.aspx")
            Else
                Invalid()
            End If
        Else
            Invalid()
        End If
    End Using

 End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 16:23:26

首先,我建议您重新检查连接字符串.

就我个人而言,我不会重复使用相同的OleDbCommand,因为这可能导致不期望的结果。相反,我会尝试下面这样的方法:

代码语言:javascript
复制
Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click

    If Not String.IsNullOrWhiteSpace(txtUsername.Text) Then

        Using con As New OleDbConnection(ConnectionString)
            con.Open()

            Dim Result As Integer = 0

            Using cmd As New OleDbCommand("Select count(*) From tblAccounts where Username = @Username", con)
                cmd.Parameters.AddWithValue("@Username", txtUsername.text)

                Result = CInt(cmd.ExecuteScalar)
            End Using

            If Result > 0 Then
                Using cmd As New OleDbCommand("Select CPassword From tblAccounts Where Username = @Username", con)
                    cmd.Parameters.AddWithValue("@Username", txtUsername.text)

                    Dim Obj As Object = cmd.ExecuteScalar()

                    If (Obj IsNot Nothing) AndAlso (Obj IsNot DBNull.Value) Then
                        Dim matches As String = Obj.ToString

                        If matches = SHA1(txtPassword.Text) Then
                            Response.Redirect("main.aspx")
                            Exit Sub
                        End If

                    End If

                End Using
            End If

        End Using

    End If

    Invalid()

End Sub

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19486591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档