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:
Imports MySql.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 = value End Set End PropertyPublic Property Senha() As String Get Return mSqlSenha End Get Set(ByVal value As String) mSqlSenha = value End Set End PropertyPublic Property DataBase() As String Get Return mSqlDataBase End Get Set(ByVal value As String)mSqlDataBase = value End Set End PropertyPublic Property HostName() As String Get Return mSqlServerHost End Get Set(ByVal value As String)mSqlServerHost = value End Set End PropertyPublic 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 SubPublic Sub CloseConnection() If mSqlConexao.State = ConnectionState.Open Then mSqlConexao.Close() mSqlConexao.Dispose() mSqlConexao = NothingEnd 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 TryReturn 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 ExceptionMsgBox(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:
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 = Nothing Dim 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 = Nothing Dim 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
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