2017-02-04 69 views
0

如果用户名和密码插入正确,我已经创建了一个代码来显示正确的消息。用户的用户名和密码是从数据库表中提取的。但我总是收到用户名和密码不正确的消息。我不知道为什么。这是我的代码连接Mysql数据库和visual basic

私人小组Button2_Click(BYVAL发件人为System.Object的,BYVALË作为System.EventArgs)把手btnLogIn.Click MySqlConn =新的MySqlConnection

MySqlConn.ConnectionString = "server=localhost;userid=root;password=12345;database=environment" 

    Dim READER As MySqlDataReader 



    Try 
     MySqlConn.Open() 
     Dim Query As String 
     Query = "select * from environment.customers where customer_name='" & txtUser.Text & "'and customer_detail='" & txtPass.Text & " '" 

     COMMAND = New MySqlCommand(Query, MySqlConn) 
     READER = COMMAND.ExecuteReader 

     Dim count As Integer 
     count = 0 
     While READER.Read 
      count = count + 1 

     End While 

     If count = 1 Then 
      MessageBox.Show("username and password are correct") 
     ElseIf count > 1 Then 
      MessageBox.Show("username and password are duplicate") 
     Else 
      MessageBox.Show("username and password are incorrect") 

     End If 



     MySqlConn.Close() 

    Catch ex As MySqlException 
     MessageBox.Show(ex.Message) 

    Finally 
     MySqlConn.Dispose() 


    End Try 
End Sub 

末级

+0

简短的回答是count总是至少为1.无论结果如何,while循环至少会执行一次。其次,你应该考虑不将密码存储为纯文本。 – MaCron

回答

0

尝试此在你的代码中。

#Region "Members" 
    Protected WithEvents lblMessage As System.Web.UI.WebControls.Label 
    #End Region 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click MySqlConn = New MySqlConnection 
If Not IsPostBack Then 
    If Not IsNothing(txtUser.text) Then 'Replace this field with your own field name. 
     If Not IsNothing(txtPass.text) Then 'Replace this field with your own field name. 
      Login() 'If both login form is not empty, execute login function 
     Else 
      LabelMessage.Text("Please enter your password.") 'If password field is empty 
      LabelMessage.Visible = True 
      Exit Sub 
     EndIf 
    ElseIf IsNothing(txtUser.text) AND IsNothing(txtPass.text)Then 
     LabelMessage.Text("Please enter your username and password.") 'If both field are empty 
     LabelMessage.Visible = True 
     Exit Sub 
    Else 
     LabelMessage.Text("Please enter your username.") 'If username field are empty 
     LabelMessage.Visible = True 
     Exit Sub 
    EndIf 
EndIf 
End Sub 

Private Sub Login() 

Dim conn As New SqlConnection 
Dim command As New SqlCommand 
Dim Password As String 
Dim Password2 As String 
Dim Username As String 

Try 
    conn.ConnectionString = "server=localhost;userid=root;password=12345;database=environment" 'Your SQL Database credentials 
    conn.Open() 'Open the connection 
    command.Connection = con 

    command.CommandText = "SELECT customer_name, customer_details FROM environment.customers WHERE (customer_name = '" & txtUser.text & "') AND (Password='" & txtPass.text & "')" 

    Dim lrd As SqlDataReader = command.ExecuteReader() 
    If lrd.HasRows Then 
     While lrd.Read() 
      Username = lrd("customer_name").ToString() 
      Password = lrt("Password").ToString() 
      Password2 = txtPass.txt() 


      If Password = Password2 and Username = txtUser.text Then 
       MessageBox.Show("Logged in successfully as " & Username, "", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       frmMain.Show() 
       Me.Hide() 
       Response.Redirect("~/Index.aspx") 'Redirect to your homepage. 

       'Clear the login field 
       txtPassword.Text = "" 
       txtUsername.Text = "" 

      End If 

     End While 

    Else 
     MessageBox.Show("Username and Password does not match.", "Authentication Failure", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 

     'Clear the login Field 
     txtPassword.Text = "" 
     txtUsername.Text = "" 

    EndIf 

Catch ex As Exception 
    Messagebox.Show("Error while connecting to SQL Server." & ex.Message) 
Finally 
    con.Close() 'After finish execute anything, force close the connection. (Whether succeed or not.) 
End Sub