VB .NET - Login com MySQL - II


 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 acesso a dados.

Continuando a primeira parte do artigo vamos melhorar o nosso projeto criando uma camada de acesso a dados.

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

Vamos criar uma classe chamada DALHelper em nosso projeto e nela definir o código para acessar o banco de dados SQL Server.

Vamos inicialmente usar ADO .NET para mostrar como acessar dados usando os objetos: SqlConnection, SqlCommand, DataSet, DataTable, etc.

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

Para isso vamos substituir o módulo ModCon.vb usado para fazer a conexão visto que o código existente no módulo  fere o princípio do encapsulamento da OOP pois pode ser acessado de qualquer parte do projeto.

Criando a camada de acesso a dados : DALHelper

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

Imports System.Configuration
Imports MySql.Data.MySqlClient
Public Class DalHelper
    Private Shared Function GetDbConnection() As MySqlConnection
        Try
            Dim conString As String = ConfigurationManager.ConnectionStrings("conexaoMySql").ConnectionString
            Dim connection As MySqlConnection = New MySqlConnection(conString)
            connection.Open()
            Return connection
        Catch ex As Exception
            Throw ex
        End Try
    End Function
   Public Overloads Shared Function GetDataTable(ByVal sql As String) As DataTable
        Using connection As MySqlConnection = GetDbConnection()
            Using da As New MySqlDataAdapter(sql, connection)
                Dim table As New DataTable
                da.Fill(table)
                Return table
            End Using
        End Using
    End Function
End Class

Nossa camada de acesso a dados vai tratar apenas do Login e por isso criamos os métodos estáticos :

Precisamos então incluir no arquivo App.Config a nossa string de conexão :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
    </startup>
    <connectionStrings>
       <add name="conexaoMySql" connectionString="Data source=localhost;userid=root;password=gpxpst;database=cadastro"/>    
    </connectionStrings>
</configuration>

Agora podemos remover o módulo ModCon.vb do projeto, e, com isso agora ficou mais fácil dar manutenção na lógica de acesso a dados e na string de conexão que esta centralizada no arquivo de configuração.

Falta definir o código no formulário para fazer o login. Veja como ficou :

  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 sql As String
            sql = "SELECT * FROM Usuarios WHERE usuario = '" & txtUsuario.Text & "' AND senha = '" & txtSenha.Text & "'"
            Dim dt As DataTable = DalHelper.GetDataTable(sql)
            Try
                If Not dt.Rows.Count > 0 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

Melhoramos um pouco o código pois não precisamos mais depender dos objetos do Connector MySQL para fazer a conexão.

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

O código melhorou mas ainda temos estamos definindo objetos de acesso a dados no formulário como a consulta SQL e o DataTable.

Na próxima parte do artigo vamos criar uma camada de negócios para remover essas dependências da interface do usuário.

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

"E disse-lhes: Ide por todo omundo, pregai o evangelho a toda criatura. Quem crer e for batizado será salvo; mas quem não crer será condenado."
Marcos 16:15,16

Referências:


José Carlos Macoratti