 VB 
2005 - Acessando o MySQL 5.0 via código.
VB 
2005 - Acessando o MySQL 5.0 via código.
Já escrevi diversos artigos sobre como acessar o banco 
de dados MySQL desde os tempos do Visual Basic, mas creio que este é o primeiro 
usando o VB 2005. Não há muitas alterações mas é bom mostrar como se faz.

Veja os meus artigos sobre o assunto :
- 
MySQL - Vinculando , Importando 
e Exportando tabelas do Access
- 
Visual Basic - Acessando MySQL 
com ADO usando um Driver ODBC
- 
Visual Basic - Acessando MySQL 
com ADO
- 
VB  e  MySQL -  Gerenciando 
dados 
- 
MySQL - Distribuindo o MySQL com 
sua aplicação
- 
MySQL - Operações básicas com 
SQL 
Como o objetivo não é mostrar como instalar o MySQL 5.0 nem como criar banco de dados e tabelas no MySQL eu vou pular esta parte mas você pode ler o meu artigo sobre o assunto: ASP.NET - Acesso ao MySQL
Você vai precisar dos seguintes recursos:
Após instalar o MySQL 5.0 verifique se o mesmo esta ativo como um serviço no painel de controle do Windows, opção desempenho e manutenção -> ferramentas administrativas -> Serviços .Você deverá o serviço MySQL (este é o nome padrão) com status Iniciado.

A seguir usando as ferramentas MySQL Administrator eu criei o banco de dados Cadastro e em seguida a tabela Clientes com a estrutura abaixo:

Usando o MySQL Query Browser , através de instruções SQL Insert Into , inclui alguns dados na tabela Clientes conforme figura a seguir:

Agora vamos criar um novo projeto no Visual Basic 2005 Express Edition do tipo Windows Application com o nome mySQL_Net.
Vamos incluir no projeto uma referência ao conector do MySQL para a plataforma .NET. Clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add Reference. Em seguida abra a guia Browse e localize a pasta onde o Connector foi instalado selecionado a dll do provedor conforme a figura a seguir;
|  | 
Agora já podemos usar as classes para acesso a dados do MySQL. Vamos incluir uma classe no projeto com o nome DBConnection.vb
A seguir vamos definir alguns métodos e propriedades na classe conforme o código abaixo:
| ImportsMySql.Data.MySqlClient 
 Dim mSqlTransacao As MySqlTransaction Dim mSqlConexao As MySqlConnection Dim mSqlServerHost As String = String.Empty Dim cmd As MySqlCommand = New MySqlCommand() Dim mSqlDataBase As String = "" Dim mSqlLogin As String = "" Dim mSqlSenha As String = "" Public Property Login() As String Get Return mSqlLogin End Get Set(ByVal value As String) mSqlLogin = valueEnd Set End Property Public Property Senha() As String Get Return mSqlSenha End Get Set(ByVal value As String) mSqlSenha = valueEnd Set End Property Public Property DataBase() As StringGet Return mSqlDataBase End Get Set(ByVal value As String) mSqlDataBase = valueEnd Set End Property Public Property HostName() As StringGet Return mSqlServerHost End Get Set(ByVal value As String) mSqlServerHost = valueEnd Set End Property Public Sub New() mSqlConexao = New MySqlConnection() Me.HostName = My.Settings.host Me.DataBase = My.Settings.database Me.Login = My.Settings.login Me.Senha = My.Settings.pwd End Sub Public Sub OpenConnection() 
     
     mSqlConexao =New MySqlConnection() mSqlConexao.ConnectionString = strConnString mSqlConexao.Open()End If End Sub Public Sub CloseConnection() If mSqlConexao.State = ConnectionState.Open Then mSqlConexao.Close() mSqlConexao.Dispose() mSqlConexao =Nothing End If End Sub 
    Public 
    Function ExecuteDS(ByVal 
    sql As 
    String) 
    As 
    DataSet Dim ds As New DataSet Dim da As MySqlDataAdapter = New MySqlDataAdapter() 
     cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = mSqlConexao da.SelectCommand = cmd da.Fill(ds) da.Dispose() Return ds Catch ex As Exception MsgBox(ex.Message)End Try Return ds End Function Public Function ExecuteDR(ByVal sql As String) As MySqlDataReader Dim dr As MySqlDataReader = Nothing 
 Me.OpenConnection() cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = mSqlConexao dr = cmd.ExecuteReader cmd.Dispose()Return dr Catch ex As Exception MsgBox(ex.Message)End Try Return dr End Function 
 | 
Nesta classe temos:
As seguintes propriedades:
Para o nosso caso iremos definir estas propriedades no arquivo app.Config conforme abaixo:
|  | 
 Dica: Você pode guardar a senha cifrada e decifrar 
na propriedade Senha. Veja uma função abaixo que você pode usar para este fim:
Dica: Você pode guardar a senha cifrada e decifrar 
na propriedade Senha. Veja uma função abaixo que você pode usar para este fim:
| A função geraHash() 
    pode ser usada para gerar um hash de um texto , no caso a senha; 
 Como a função é estática (Shared) não precisamos criar uma instância da classe para usá-la. Por isso no código usamos diretamente: Protege.GeraHash(txtSenha.Text.Trim) | 
Os valores serão recuperados no construtor definido na classe.(Sub New)
A classe possui os seguintes métodos:
Para mostrar como usar a classe vamos preencher um DataGridView usando um DataSet e um ListBox usando um DataReader via MySQL.
Para isso inclua no formulário os controles SplitContainer, um DataGridView, um ListBox e dois botões de comando conforme a figura abaixo:
|  | 
Agora no evento Click do botão - MySQL DataSet inclua o seguinte código:
| Private
    Sub btnDS_Click(ByVal 
    sender As System.Object, 
    ByVal e As System.EventArgs)
    Handles btnDS.Click Dim accDb As New DBConnection Dim ds As DataSet = NothingDim sql As String = "Select * from Clientes" ds = accDb.ExecuteDS(sql) DataGridView1.DataSource = ds.Tables(0).DefaultView End Sub | 
Este cria uma instância da nossa classe DBConnection e usa o método ExecuteDS obtendo um dataset com todo os registros da tabela Clientes. Em seguida os registros são exibidos no DataGridView.
Agora no evento Click do botão - MySQL DataReader inclua o seguinte código:
| Private Sub 
    btnDR_Click(ByVal sender 
    As System.Object, ByVal e
    As System.EventArgs) 
    Handles btnDR.Click 
     Dim dr As MySqlDataReader = NothingDim sql As String = "Select * from Clientes" 
 Try While dr.Read() ListBox1.Items.Add(dr(0).ToString() & vbTab & dr(1).ToString & vbTab & dr(2).ToString) End While dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End Sub | 
Este cria uma instância da nossa classe DBConnection e usa o método ExecuteDR obtendo um datareader com todo os registros da tabela Clientes. Em seguida os registros são exibidos no ListBox.
Veja o resultado obtido na figura a seguir:

A classe pode ser considerada a camada de dados que criamos para acessar o MySQL. Note que o código do formulário ficou bem enxuto.
Tanto no formulário como na classe você deverá declarar o seguinte comando: Imports MySql.Data.MySqlClient
Pegue o projeto completo aqui:  
 mySQL_NET.zip
 
mySQL_NET.zip 
Como você viu não tem segredo acessar o MySQL usando o VB 2005 Express. Você pode melhorar a nossa classe, principalmente no tratamento de exceções.
Até o próximo artigo .NET ...

José Carlos Macoratti