VB .NET - Login com MySQL - III


 No artigo de hoje vamos recordar como fazer o login em um banco de dados MySQL usando a linguagem VB .NET: criando uma camada de negócios.

Continuando a segunda parte do artigo vamos melhorar o nosso projeto criando uma camada de negócios.

Podemos fazer isso criando uma simples classe ou incluindo um novo projeto na solução.

Vamos criar uma classe chamada BLLHelper em nosso projeto e nela definir a lógica de negócio da nossa aplicação.

Nosso objetivo será remover da interface do usuário a responsabilidade para acessar os dados.

Criando a camada de negócios: BLLHelper

Abra o projeto criado na primeira parte do artigo e inclua uma classe chamada BLLHelper com o código abaixo:

Public Class BLLHelper
    Public Shared Function Login(ByVal nome, ByVal senha) As Usuario
        Try
            Dim sql As String = "SELECT usuario, senha, email FROM Usuarios WHERE usuario = '" & nome & "' AND senha = '" & senha & "'"
            Dim tabela As New DataTable
            tabela = DalHelper.GetDataTable(sql)
            Return GetUsuario(tabela)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Shared Function GetUsuario(ByVal tabela As DataTable) As Usuario
        Try
            Dim _usuario As New Usuario
            If tabela.Rows.Count > 0 Then
                _usuario.Nome = tabela.Rows(0).Item(0)
                _usuario.Senha = tabela.Rows(0).Item(1)
                _usuario.Email = tabela.Rows(0).Item(2)
                Return _usuario
            Else
                _usuario = Nothing
                Return _usuario
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Function
End Class

Nossa camada de negócios conhece detalhes de implementação da nossa aplicação e assim possui os seguintes métodos estáticos :

Precisamos então incluir projeto uma classe que representa o nosso Usuario. Crie uma nova classe chamada Usuario com o código a seguir:

Public Class Usuario
    Public Property Nome As String
    Public Property Senha As String
    Public Property Email As String
End Class

E agora vamos definir o código do formulário de login:

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
            Dim usuario As Usuario = BLLHelper.Login(txtUsuario.Text, txtSenha.Text)
            Try
                If IsNothing(usuario) 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
        End If
    End Sub

Perceba que agora nossa camada de apresentação não precisa saber nada sobre como a conexão com o banco de dados é feita.

Usamos a nossa camada de negócio representada pela classe BLLHelper para fazer o login e agora o retorno é um objeto do tipo Usuario.

Se o objeto for igual a Nothing então o login falhou.

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

O código melhorou ainda mais mas podemos continuar a melhorar implementando a nossa camada de negócio usando interfaces e a seguir usar a injeção da dependência. Também podemos usar stored procedures ao invés de uma consulta in-line para fazer a consulta SQL no login.

Em um próximo artigo eu volto a esse assunto.

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

Todavia digo-vos a verdade, que vos convém que eu vá; porque, se eu não for, o Consolador não virá a vós; mas, quando eu for, vo-lo enviarei.
E, quando ele vier, convencerá o mundo do pecado, e da justiça e do juízo.
Do pecado, porque não crêem em mim;
Da justiça, porque vou para meu Pai, e não me vereis mais;

João 16:7-10

Referências:


José Carlos Macoratti