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.