VB.Net Login And Register Form With MySQL

How to Create Login and Register Form in Visual Basic.Net with MySQL Database

Visual Basic.Net Login And Register Form With MySQL


In This VB.NET Tutorial We Will See How To Make a SignIn and a SignUp Form With Design and Connection With MySQL Database To Allow The Users To Create Their Account or To Login Into The Application Using Visual Basic.Net Windows Form and Visual Studio Editor .

What We Are Gonna Use In This Project:

- Visual Basic.Net Programming Language.
- Visual Studio Editor.
xampp server.
- MySQL Database.
- PhpMyAdmin.
- Canva.com( to create the images )

What We Will Do In This Project:

- Design Two Forms For The Login and Register Using Panels, TextBoxes, Buttons and Labels.
- Create a Custom Buttons To Close The Application .
- Create a Class For The Connection With MySQL Database.
- Connect VB.Net To MySQL Database.
- Allow The Users To Create Their Accounts On Register Form.
- Allow The Users To Access The Application On Login Form 
- Check If The User Leave Some Fields Empty.
- Check if The Username Already Exists.
- Check If The User Enter a Wrong Password In The Confirmation Field.   



WATCH THIS VB.Net TUTORIAL



Project Source Code:


' Create a Class To Connect Our Application With The MySQL Database

Imports MySql.Data.MySqlClient

Public Class MY_CONNECTION

    ' first we need to download the mysql connector & add it to our project
    ' https://dev.mysql.com/downloads/connector/net/8.0.html
    ' open xampp
    ' create the mysql database using phpmyadmin
    ' create the database and name it "vbnet_users_db"
    ' create a table and name it "users"
    ' create the connection

    Private connection As New MySqlConnection("datasource=localhost;port=3306;username=root;password=;database=vbnet_users_db")

    ' return the connection
    ReadOnly Property getConnection() As MySqlConnection
        Get
            Return connection
        End Get
    End Property

    ' open the connection
    Sub openConnection()

        If connection.State = ConnectionState.Closed Then
            connection.Open()
        End If

    End Sub

    ' close the connection
    Sub closeConnection()

        If connection.State = ConnectionState.Open Then
            connection.Close()
        End If

    End Sub

End Class



' Create The Register Form To Allow Users To Create Their Account  

Imports MySql.Data.MySqlClient

Public Class RegisterForm

    Private Sub RegisterForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' transparent black background for panel2
        Panel2.BackColor = Color.FromArgb(120, 0, 0, 0)
        ' transparent blue background for panel3
        Panel3.BackColor = Color.FromArgb(100, 17, 97, 238)

        ButtonClose.BackColor = Color.FromArgb(100, 0, 0, 0)

    End Sub

     ' button close click
    Private Sub ButtonClose_Click(sender As Object, e As EventArgs) Handles ButtonClose.Click

        Application.Exit()

    End Sub

    ' textbox first name enter
    Private Sub TextBoxFirstname_Enter(sender As Object, e As EventArgs) Handles TextBoxFirstname.Enter

        LabelFN.ForeColor = Color.Red

    End Sub

    ' textbox first name leave
    Private Sub TextBoxFirstname_Leave(sender As Object, e As EventArgs) Handles TextBoxFirstname.Leave

        LabelFN.ForeColor = Color.White

    End Sub

    ' textbox last name enter
    Private Sub TextBoxLastname_Enter(sender As Object, e As EventArgs) Handles TextBoxLastname.Enter

        LabelLN.ForeColor = Color.Red

    End Sub

    ' textbox last name leave
    Private Sub TextBoxLastname_Leave(sender As Object, e As EventArgs) Handles TextBoxLastname.Leave

        LabelLN.ForeColor = Color.White

    End Sub

    ' textbox username enter
    Private Sub TextBoxUsername_Enter(sender As Object, e As EventArgs) Handles TextBoxUsername.Enter

        LabelUN.ForeColor = Color.Red

    End Sub

    ' textbox username leave
    Private Sub TextBoxUsername_Leave(sender As Object, e As EventArgs) Handles TextBoxUsername.Leave

        LabelUN.ForeColor = Color.White

    End Sub

    ' textbox email enter
    Private Sub TextBoxEmail_Enter(sender As Object, e As EventArgs) Handles TextBoxEmail.Enter

        LabelEM.ForeColor = Color.Red

    End Sub

    ' textbox email leave
    Private Sub TextBoxEmail_Leave(sender As Object, e As EventArgs) Handles TextBoxEmail.Leave

        LabelEM.ForeColor = Color.White

    End Sub

     ' textbox password enter
    Private Sub TextBoxPassword_Enter(sender As Object, e As EventArgs) Handles TextBoxPassword.Enter

        LabelPASS1.ForeColor = Color.Red

    End Sub

     ' textbox password leave
    Private Sub TextBoxPassword_Leave(sender As Object, e As EventArgs) Handles TextBoxPassword.Leave

        LabelPASS1.ForeColor = Color.White

    End Sub

    ' textbox confirm password enter
    Private Sub TextBoxConfirmPassword_Enter(sender As Object, e As EventArgs) Handles TextBoxConfirmPassword.Enter

        LabelPASS2.ForeColor = Color.Red

    End Sub

     ' textbox confirm password leave
    Private Sub TextBoxConfirmPassword_Leave(sender As Object, e As EventArgs) Handles TextBoxConfirmPassword.Leave

        LabelPASS2.ForeColor = Color.White

    End Sub

    ' button register click
    Private Sub ButtonRegister_Click(sender As Object, e As EventArgs) Handles ButtonRegister.Click

        ' check if the fields are empty
        ' check if the password = the confirm password
        ' check if the username already exists

        ' get textboxes values
        Dim fname As String = TextBoxFirstname.Text
        Dim lname As String = TextBoxLastname.Text
        Dim username As String = TextBoxUsername.Text
        Dim email As String = TextBoxEmail.Text
        Dim password As String = TextBoxPassword.Text
        Dim cpassword As String = TextBoxConfirmPassword.Text


        If fname.Trim() = "" Or lname.Trim() = "" Or username.Trim() = "" Or email.Trim() = "" Or password.Trim() = "" Then

            MessageBox.Show("One Or More Fields Are Empty", "Missing Data", MessageBoxButtons.OK, MessageBoxIcon.Stop)

        ElseIf Not String.Equals(password, cpassword) Then

            MessageBox.Show("Wrong Confirmation Password", "password Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        ElseIf usernameExist(username) Then

            MessageBox.Show("This Username Already Exists, Choose Another One", "Duplicate Username", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        Else

            ' add the new user
            Dim conn As New MY_CONNECTION()
            Dim command As New MySqlCommand("INSERT INTO `users`(`first_name`, `last_name`, `email`, `username`, `password`) VALUES (@fn, @ln, @mail, @usn, @pass)", conn.getConnection)

            command.Parameters.Add("@fn", MySqlDbType.VarChar).Value = fname
            command.Parameters.Add("@ln", MySqlDbType.VarChar).Value = lname
            command.Parameters.Add("@mail", MySqlDbType.VarChar).Value = email
            command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = username
            command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = password

            conn.openConnection()

            If command.ExecuteNonQuery() = 1 Then

                MessageBox.Show("Registration Completed Successfully", "User Added", MessageBoxButtons.OK, MessageBoxIcon.Information)
                conn.closeConnection()

            Else

                MessageBox.Show("Something Happen", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                conn.closeConnection()

            End If


        End If



    End Sub


    ' create a function to check if the username already exists
    Public Function usernameExist(ByVal username As String) As Boolean

        Dim con As New MY_CONNECTION()
        Dim table As New DataTable()
        Dim adapter As New MySqlDataAdapter()
        Dim command As New MySqlCommand("SELECT * FROM `users` WHERE `username` = @usn", con.getConnection())
        command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = username

        adapter.SelectCommand = command
        adapter.Fill(table)

        ' if the username exist return true
        If table.Rows.Count > 0 Then

            Return True

            ' if not return false  
        Else

            Return False

        End If

    End Function

    ' button close mouse enter
    Private Sub ButtonClose_MouseEnter(sender As Object, e As EventArgs) Handles ButtonClose.MouseEnter

        ButtonClose.ForeColor = Color.White

    End Sub

    ' button close mouse leave
    Private Sub ButtonClose_MouseLeave(sender As Object, e As EventArgs) Handles ButtonClose.MouseLeave

        ButtonClose.ForeColor = Color.Black

    End Sub

    ' label go to signin mouse enter
    Private Sub LabelGoToSignIn_MouseEnter(sender As Object, e As EventArgs) Handles LabelGoToSignIn.MouseEnter

        LabelGoToSignIn.ForeColor = Color.White

    End Sub

    ' label go to signin mouse leave
    Private Sub LabelGoToSignIn_MouseLeave(sender As Object, e As EventArgs) Handles LabelGoToSignIn.MouseLeave

        LabelGoToSignIn.ForeColor = Color.Black

    End Sub

    ' label go to signin mouse click
    Private Sub LabelGoToSignIn_Click(sender As Object, e As EventArgs) Handles LabelGoToSignIn.Click

        Me.Hide()
        Dim lForm As New Login_Form()
        lForm.Show()

    End Sub
End Class


' Create The Login Form To Allow The User To Access The Application

Imports MySql.Data.MySqlClient

Public Class Login_Form

    Private Sub Login_Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' transparent black background for panel2
        Panel2.BackColor = Color.FromArgb(120, 0, 0, 0)
        ' transparent blue background for panel3
        Panel3.BackColor = Color.FromArgb(100, 17, 97, 238)

        ButtonClose.BackColor = Color.FromArgb(100, 0, 0, 0)

    End Sub

    ' button close mouse enter
    Private Sub ButtonClose_MouseEnter(sender As Object, e As EventArgs) Handles ButtonClose.MouseEnter

        ButtonClose.ForeColor = Color.White

    End Sub

    ' button close mouse leave
    Private Sub ButtonClose_MouseLeave(sender As Object, e As EventArgs) Handles ButtonClose.MouseLeave

        ButtonClose.ForeColor = Color.LightGray

    End Sub

    ' button close click
    Private Sub ButtonClose_Click(sender As Object, e As EventArgs) Handles ButtonClose.Click

        Application.Exit()

    End Sub

    ' textbox username enter
    Private Sub TextBoxUsername_Enter(sender As Object, e As EventArgs) Handles TextBoxUsername.Enter

        ' clear the textbox when the textbox get the focus
        Dim username As String = TextBoxUsername.Text
        ' check if the username is empty
        ' check if the textbox contains the default value "username"
        If username.Trim().ToLower() = "username" Or username.Trim() = "" Then

            ' clear the textbox
            TextBoxUsername.Text = ""
            ' change the textbox for color
            TextBoxUsername.ForeColor = Color.Black

        End If

    End Sub

    ' textbox username leave
    Private Sub TextBoxUsername_Leave(sender As Object, e As EventArgs) Handles TextBoxUsername.Leave

        ' when the textbox get lost the focus
        Dim username As String = TextBoxUsername.Text
        ' check if the username is empty
        ' check if the textbox contains the default value "username"
        If username.Trim().ToLower() = "username" Or username.Trim() = "" Then

            ' set the textbox text
            TextBoxUsername.Text = "username"
            ' change the textbox for color
            TextBoxUsername.ForeColor = Color.DarkGray

        End If

    End Sub

    ' textbox password enter
    Private Sub TextBoxPassword_Enter(sender As Object, e As EventArgs) Handles TextBoxPassword.Enter

        ' when textbox password has focus
        Dim pass As String = TextBoxPassword.Text
        If pass.Trim().ToLower() = "password" Or pass.Trim() = "" Then

            ' clear the textbox text
            TextBoxPassword.Text = ""
            ' change the textbox font color
            TextBoxPassword.ForeColor = Color.Black
            ' use system password
            TextBoxPassword.UseSystemPasswordChar = True

        End If

    End Sub

    ' textbox password leave
    Private Sub TextBoxPassword_Leave(sender As Object, e As EventArgs) Handles TextBoxPassword.Leave

        ' when textbox password lost focus
        Dim pass As String = TextBoxPassword.Text
        If pass.Trim().ToLower() = "password" Or pass.Trim() = "" Then

            ' set the textbox text
            TextBoxPassword.Text = "password"
            ' change the textbox font color
            TextBoxPassword.ForeColor = Color.DarkGray
            ' set system password to false
            TextBoxPassword.UseSystemPasswordChar = False

        End If

    End Sub

    ' button login click
    Private Sub ButtonLogin_Click(sender As Object, e As EventArgs) Handles ButtonLogin.Click

        ' before the user can login we need to check if the textboxes are empty
        ' if they contains the default values( username & password )
        ' check if this user exist in the database

        Dim conn As New MY_CONNECTION()
        Dim adapter As New MySqlDataAdapter()
        Dim table As New DataTable()
        Dim command As New MySqlCommand("SELECT `username`, `password` FROM `users` WHERE `username` = @usn AND `password` = @pass", conn.getConnection())

        command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = TextBoxUsername.Text
        command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = TextBoxPassword.Text

        If TextBoxUsername.Text.Trim() = "" Or TextBoxUsername.Text.Trim().ToLower() = "username" Then

            MessageBox.Show("Enter Your Username To Login", "Missing Username", MessageBoxButtons.OK, MessageBoxIcon.Error)

        ElseIf TextBoxPassword.Text.Trim() = "" Or TextBoxPassword.Text.Trim().ToLower() = "password" Then

            MessageBox.Show("Enter Your Password To Login", "Missing Password", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Else

            adapter.SelectCommand = command
            adapter.Fill(table)

            If table.Rows.Count > 0 Then

                Me.Hide()
                Dim mainAppForm As New ApplicationMainForm()
                mainAppForm.Show()

            Else

                MessageBox.Show("This Username Or/And Password Doesn't Exists", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If

        End If


    End Sub

    ' label go to signup form mouse enter
    Private Sub LabelGoToSignUp_MouseEnter(sender As Object, e As EventArgs) Handles LabelGoToSignUp.MouseEnter

        LabelGoToSignUp.ForeColor = Color.White

    End Sub

  ' label go to signup form mouse leave
    Private Sub LabelGoToSignUp_MouseLeave(sender As Object, e As EventArgs) Handles LabelGoToSignUp.MouseLeave

        LabelGoToSignUp.ForeColor = Color.Black

    End Sub

    ' label go to signup form click
    Private Sub LabelGoToSignUp_Click(sender As Object, e As EventArgs) Handles LabelGoToSignUp.Click

        Me.Hide()
        Dim rForm As New RegisterForm()
        rForm.Show()

    End Sub

End Class





OUTPUT:


Sign Up Form
Register Form

Register Form
Register Form - TextBox Enter

Create Account Form
Register Form - Error

Sign In Form
Login Form

Login Form
Login Form - Error

Main Application Form
Main Application Form




if you want the source code click on the download button below




VB.Net Students Information System Source Code
VB.Net Hotel System Source Code





Share this

Related Posts

Previous
Next Post »

6 comments

comments
3 septembre 2019 à 08:50 delete

MySql.Data.MySqlClient.MySqlException: 'Unknown column 'first_name' in 'field list''

Reply
avatar
3 septembre 2019 à 08:51 delete

Help me, in register used for error compilation

Reply
avatar
26 février 2024 à 07:18 delete

i would not use this code it is not secure even if u get it working first mysql injection will work in this code it is not secure use at own risk never store database connection in vb.net app u can get raw text for the connection after compiled Private connection As New MySqlConnection("datasource=localhost;port=3306;username=root;password=;database=vbnet_users_db")

Reply
avatar