VB .NET - Login com MySQL - I


 No artigo de hoje vamos recordar como fazer o login em um banco de dados MySQL usando a linguagem VB .NET.

Para seguir este tutorial você precisa  possuir o MySQL instalado. Calma, ele é grátis, pegue aqui e instale: https://dev.mysql.com/downloads/mysql/

Você também tem que baixar o Conector MySQL para a plataforma .NET aqui : https://www.mysql.com/products/connector/

Após instalar crie um banco de dados Cadastro e uma tabela usuarios com os campos : id , usuario, senha e email

Nota:  Veja detalhes neste artigo :   C# - Acessando MySQL - Macoratti

Você pode usar o script SQL abaixo:

CREATE TABLE `cadastro`.`usuarios` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `usuario` VARCHAR(100) NULL,
    `senha` VARCHAR(100) NULL,
     `email` VARCHAR(145) NULL,
PR IMARY KEY (`id`));
 

Agora inclua algumas informações na tabela usando a instrução :  Insert Into usuarios(usuario,senha,email) values('teste','123456','teste@email.com')

Criando o projeto no VS 2017 Community

Crie um projeto Windows Forms no VS 2017 Community e defina um formulário com o leiaute abaixo:

Temos aqui um PictureBox exibindo uma imagem armazenda na pasta Resources do projeto, 2 TextBox e 2 Buttons.

A seguir inclua uma referência ao MySql no projeto:

Crie um módulo no projeto com o nome ModCon.vb e a seguir inclua o código abaixo neste módulo:

O código do módulo é visível em todo o projeto.(isso é bom ou ruim ?)

A seguir inclua o código abaixo no formulário:

Imports MySql.Data.MySqlClient
Public Class frmLogin
    Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
        If Trim(txtUsuario.Text) = "" Or Trim(txtSenha.Text) = "" Then
            MsgBox("Informe as suas credenciais para Login!", vbExclamation, "Dados Inválidos !")
        Else
            con.Open()
            Dim sql = "SELECT * FROM Usuarios WHERE usuario = '" & txtUsuario.Text & "' AND senha = '" & txtSenha.Text & "'"
            Dim cmd = New MySqlCommand(sql, con)
            Dim dr As MySqlDataReader = cmd.ExecuteReader
            Try
                If dr.Read = False Then
                    MsgBox("Login Falhou!", vbCritical, "Login inválido")
                    txtUsuario.Text = ""
                    txtSenha.Text = ""
                    txtSenha.Focus()
                Else
                    MsgBox("Login realizado com Sucesso", vbInformation, "Login")
                    Me.Hide()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            con.Close()
        End If
    End Sub
    Private Sub btnCancela_Click(sender As Object, e As EventArgs) Handles btnCancela.Click
        If (MessageBox.Show("Deseja Encerrar ?", "Encerrar", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
            Application.Exit()
        End If
    End Sub
End Class

Executando o projeto e informando as credenciais corretas do usuário teremos o seguinte resultado:

O código funciona mas pode e deve ser melhorado pois fere as boas práticas misturando lógica de acesso a dados com interface de usuário.(código espagueti)

Estamos ferindo o princípio da responsabilidade única - SRP. Um dos pilares dos princípios SOLID : Pílula de Arquitetura - Princípios SOLID - Macoratti

A sugestão é criar  uma camada de acesso a dados.

Na próxima parte do artigo vamos melhorar o projeto.

Pegue o código do projeto aqui : login.zip

(disse Jesus) "Eu sou o pão vivo que desceu do céu; se alguém comer deste pão, viverá para sempre; e o pão que eu der é a minha carne, que eu darei pela vida do mundo. "
João 6:51

Referências:


José Carlos Macoratti