Back-End

11 dez, 2017

VB .NET – Inicializando uma lista e exibindo registros do MySQL

Publicidade

Neste artigo vou mostrar como inicializar uma lista com dados a partir de um banco de dados MySQL e exibir registros selecionados em um TextBox usando a linguagem VB .NET.

O Data Binding é a maneira mais simples e fácil de acessar dados mas ela não é muito flexível. Para te dar mais controle sobre o que está acontecendo, usar os recursos da ADO .NET e dos provedores de dados é um melhor caminho (talvez o melhor caminho seja usar uma ferramenta ORM).

Então neste artigo, vou mostrar como acessar o MySQL e inicializar uma lista, que no exemplo será um controle ListBox. Com a lista populada, basta selecionar um item da lista para exibir os detalhes do item atual em controles TextBox.

Vamos acessar o banco de dados Cadastro, criado no MySQL e a tabela Clientes que tem a seguinte estrutura: id, nome, CPF e e-mail.

Recursos Usados:

Criando o projeto Windows Forms

Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Classic Desktop ->Windows Forms Application(.NET Framework).

Informe um nome de seu gosto. Eu vou usar o nome vbn_MySQLista.

A seguir, inclua no projeto uma referência à biblioteca MySql.Data via Nuget (Tools-> Nuget Package Manager-> Manage Nuget Packages for Solution).

Vamos incluir uma referência ao System.Configuration no projeto, pois vamos acessar a string de conexão que será armazenada no arquivo app.Config. (Project->Add Reference).

Para concluir, inclua no arquivo App.config a string de conexão usada para acessar o banco de dados Cadastro do MySQL:

...
<connectionStrings>
      <add name="conexaoMysql" connectionString="Server=localhost;Database=Cadastro;Uid=root;Pwd=******;" providerName="MySql.Data" />
</connectionStrings>
...

A partir da ToolBox, inclua no formulário Form1.vb os seguintes controles:

  • 1 ListBox – lbDados
  • 1 GroupBox
  • 4 Labels
  • 4 TextBox – txtId, txtNome, txtCPF e txtEmail
  • 2 Buttons – btnAcessarDados e btnSair

Disponha os controles conforme mostra a imagem da figura abaixo:

Implementando o código no formulário

Vamos agora definir o código no formulário Form1.vb começando com a declaração dos namespaces:

Imports System.Configuration
Imports MySql.Data.MySqlClient

No início do formulário vamos obter a string de conexão e declarar as variáveis para acessar os dados:

Dim stringConexao As String = ConfigurationManager.ConnectionStrings(“ConexaoMySql”).ConnectionString()
Dim conexaoMySql As MySqlConnection
Dim comandoMySQl As MySqlCommand
Dim leitorDataReader As MySqlDataReader

No evento Click do botão de comando Acessar Dados digite o código a seguir:

Private Sub btnAcessarDados_Click(sender As Object, e As EventArgs) Handles btnAcessarDados.Click
        Dim consultaSql As String = "Select * from Clientes"
        Try
            conexaoMySql = New MySqlConnection(stringConexao)
            comandoMySQl = New MySqlCommand(consultaSql, conexaoMySql)
            conexaoMySql.Open()
            leitorDataReader = comandoMySQl.ExecuteReader()
            While (leitorDataReader.Read())
                lbDados.Items.Add(leitorDataReader.Item("Nome"))
            End While
        Catch ex As Exception
            MessageBox.Show("Erro  :" + ex.Message)
        Finally
            leitorDataReader.Close()
            conexaoMySql.Close()
        End Try
    End Sub

Este código vai acessar a tabela Clientes e exibir o campo nome no controle ListBox.

A seguir no evento SelectedIndexChanged do ListBox defina o código abaixo para exibir o registro do nome selecionado:

Private Sub lbDados_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbDados.SelectedIndexChanged
        If lbDados.SelectedIndex < 0 Then
            Return
        End If
        Try
            Dim nome As String = lbDados.SelectedItem.ToString().Replace("'", "''")
            Dim consultaSql As String = "Select * from Clientes where nome = '" & nome & "'"
            comandoMySQl = New MySqlCommand(consultaSql, conexaoMySql)
            comandoMySQl.Connection = conexaoMySql
            conexaoMySql.Open()
            leitorDataReader = comandoMySQl.ExecuteReader()
            leitorDataReader.Read()
            txtID.Text = leitorDataReader("Id").ToString()
            txtNome.Text = leitorDataReader("Nome").ToString()
            txtCPF.Text = leitorDataReader("CPF").ToString()
            txtEmail.Text = leitorDataReader("Email").ToString()
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message)
        Finally
            leitorDataReader.Close()
            conexaoMySql.Close()
        End Try
    End Sub

Neste código obtemos o nome selecionado e obtemos o registro correspondente na tabela Clientes e a seguir exibimos os valores no TextBox.

Executando o projeto iremos obter o resultado abaixo:

Você pode ajustar o código incluindo muitas personalizações para atender o seu objetivo. (Que tal criar uma camada de acesso dados ?)

Fique à vontade.

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