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.




