我確實有一個惱人的問題在這裏,我無法解決這個問題。我的問題是,我無法確認我的登錄,因爲我的try-catch塊沒有'捕捉'任何東西,我甚至在DataBase Opening和DB.Close之間使用了斷點來查看是否有任何問題。下面是一些屏幕:VB.NET登錄MySQL數據庫
所以,如果我進入Gigel用戶和他的密碼123(它是加密的)我得到我的假執行從我的IF,「什麼是錯在那裏」
錯誤......,任何人?
Imports MySql.Data
Imports MySql.Data.MySqlClient
Imports System.Security.Cryptography
Public Class Form1
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim MySQLConnection As New MySqlConnection("Server = localhost;Database = users; Uid=root; Pwd = password ")
Dim HashedPass As String = ""
'Converts the Password into bytes, computes the hash of those bytes, and then converts them into a Base64 string
Using MD5hash As MD5 = MD5.Create()
System.Convert.ToBase64String(MD5hash.ComputeHash(System.Text.Encoding.ASCII.GetBytes(TextBox2.Text)))
End Using
'Counter
Dim SqlQuery As String = "SELECT COUNT(*) From users1 WHERE username = @Username AND password = @Password; "
MySQLConnection.Open()
Dim Command As New MySqlCommand(SqlQuery, MySQLConnection)
'Sanitising parameters
Command.Parameters.Add(New MySqlParameter("@Username", TextBox1.Text))
Command.Parameters.Add(New MySqlParameter("@Password", HashedPass))
'checker
If Command.ExecuteScalar() = 1 Then
MsgBox("Thanks for logging in")
Me.Hide()
Else
MsgBox("Something's wrong down there")
End If
MySQLConnection.Close()
End Sub
End Class
'HashedPass'是空的,當你將它作爲一個參數,所以'Command.ExecuteScalar'將返回'0' – equisde
我沒有改正它,但我有相同的邏輯錯誤。如果我評論散列部分並直接作爲參數使用TextBox2.text(我輸入密碼的文本框),它可以工作(輸入完整的加密代碼)。我的錯誤出現在哈希區域的某處,感謝輸入tho,哈希必須是= with something,lol – ExtremeSwat
在'If'上放置一個斷點並檢查'Command.CommandText'的值。該值是將執行的SQL語句 – equisde