VB.NET使用MySQL数据库登录表单

时间:2014-08-29 14:10:11

标签: mysql vb.net

有人可以帮我解决以下问题。

我创建了一个名为dbhr的数据库,其中有一个名为user的表,其中包含两个字段' username'和密码'具有VARCHAR数据类型。 我有一个登录表单,有两个文本框(tbxUsername,tbxPassword)和一个OK按钮。我已连接我的数据库以验证用户名和密码。但它总是给我错误的密码信息。我不知道我哪里出错了。 请帮忙。

我使用MySQL Workbench 6.1

提前致谢。

这是VB.NET登录按钮代码。

Imports MySql.Data.MySqlClient

Public Class Login

    Dim mydbcon As MySqlConnection
    Dim COMMAND As MySqlCommand

    ' TODO: Insert code to perform custom authentication using the provided username and password 
    ' (See http://go.microsoft.com/fwlink/?LinkId=35339).  
    ' The custom principal can then be attached to the current thread's principal as follows: 
    '     My.User.CurrentPrincipal = CustomPrincipal
    ' where CustomPrincipal is the IPrincipal implementation used to perform authentication. 
    ' Subsequently, My.User will return identity information encapsulated in the CustomPrincipal object
    ' such as the username, display name, etc.

    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
        mydbcon = New MySqlConnection
        mydbcon.ConnectionString = "server=localhost;userid=root;password=rootword;database=hrdb"
        Dim reader As MySqlDataReader

        Try
            mydbcon.Open()
            Dim Query As String
            Query = "select * from user where username= ' " & tbxUsername.Text & "' and password= ' " & tbxPassword.Text & "' "
            COMMAND = New MySqlCommand(Query, mydbcon)
            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 wrong")
            End If
            mydbcon.Close()
        Catch ex As MySqlException
            MessageBox.Show(ex.Message)
        Finally
            mydbcon.Dispose()
        End Try

    End Sub

请单击以下链接以查看数据库表记录和数据类型。

点击here

1 个答案:

答案 0 :(得分:0)

行中有一些额外的空格

Query = "select * from user where username= ' " & tbxUsername.Text & "' and password= ' " & tbxPassword.Text & "' "

我将改为

Query = String.Format("SELECT * FROM user WHERE username = '{0}' AND password = '{1}'", Me.tbxUsername.Text.Trim(), Me.tbxPassword.Text.Trim())

我会使用String.Format()来使它更清晰,更少有机会忽略这些额外的空间。