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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Criando uma aplicação com 3 camadas com MySQL - Macoratti
C# - Manutenção de dados com DataGridView no MySQL - Macoratti