[英]Visual Basic Login
有人可以幫我登錄時遇到問題嗎? 當我嘗試登錄時,出現錯誤“多步OLE DB操作生成錯誤。請檢查每個OLE DB狀態值(如果可用)。未完成任何工作。” -與ExecuteScalar檢索結合。
預先感謝您可能會或可能不會給我的任何幫助。
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
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.