Asp.net Visual Basic登录
有人能帮我吗?我的登录有问题。 当我尝试登录时,我收到错误“多步骤OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。未完成任何工作。”-与ExecuteScalar检索结合使用 提前感谢您为我提供的任何帮助Asp.net Visual Basic登录,asp.net,vb.net,oledb,executescalar,data-connections,Asp.net,Vb.net,Oledb,Executescalar,Data Connections,有人能帮我吗?我的登录有问题。 当我尝试登录时,我收到错误“多步骤OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。未完成任何工作。”-与ExecuteScalar检索结合使用 提前感谢您为我提供的任何帮助 Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click If String.IsNullOrWhiteSpace(txtUsername.Text)
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
首先,我建议(已经有人建议)重新检查连接字符串
就个人而言,我不会重复使用相同的OleDbCommand
,因为这可能会导致不希望的结果。相反,我会尝试以下方法:
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
希望这对您有所帮助从这个链接()可以看出,这个错误似乎是由您的连接字符串引起的。您可以按照此链接中的建议进行操作,也可以发布
connectionString
内容,以便有人可以帮助您。PS:您正在执行cmd.ExecuteScalar()
两次:最好将Dim匹配项作为String=CType(cmd.ExecuteScalar(),String)
行置于条件之外,并在条件语句中写入matches>0
。您正在访问哪个数据库?SQL Server/Access/Etc?“?”参数是特定于数据库的。尝试在SQL中使用“@UserName”和命名变量以及cmd.Parameters.AddWithValue(“@UserName”,txtUsername)
。看看这是否有帮助。