Visual Basic 6 - Acessando uma base de dados MySQL com ADO usando um driver ODBC
Neste artigo irei mostrar como fazer uma conexão com o MySQL usando um driver ODBC , lembrando que podemos usar também um provedor OLEDB. |
No meu primeiro artigo sobre VB e MySQL - Visual Basic - Acessando uma base de dados MySQL com ADO , abordei os conceitos básicos requeridos para instalar e criar um banco de dados e uma tabela no MySQL e a seguir mostrei como fazer uma conexão com ADO usando um DSN.
Se você , ao ler este artigo , estiver pensando no porquê de eu estar falando do MySQL , a resposta é simples : Se você quer trabalhar com um banco de dados Cliente/Servidor o MySQL além de ser uma boa opção é GRÁTIS... (deu para convencer ????)
Para que as coisas funcionem você vai precisar ter os seguintes componentes instalados:
Eu vou usar o banco de dados Clientes e a tabela Clientes criados no artigo citado acima . Aqui eu vou fazer uma pausa para mostrar mais uma maneira de criar um banco de dados no MySQL .
informe o nome do usuário e a senha e clique no botão OK para criar o arquivo. O ícone do programa será instalado na barra de tarefas
( A luz verde indica que o MySQL esta ativo e pronto para ser usado)
Agora vou voltar ao objetivo do artigo - Acessar a tabela clientes do banco de dados Clientes usando ADO sem usar um DSN. Ao Trabalho...
- Inicie um novo projeto no Visual Basic e insira os controles no formulário padrão conforme o layout da figura abaixo:
- Faça uma referência a biblioteca Microsoft ActiveX Data Objects 2.X LIbrary no seu projeto |
Vou explicar somente o código usado para criar a conexão com a base de dados , os códigos usados para outras tarefas já foram comentados em artigos anteriores.
a - O Código da seção General Declarations
Option
Explicit Private WithEvents adoDataConn As ADODB.Connection 'com withevents voce pode codificar os eventos para a conexao com 'recordset e tambem pode localizar o objeto na lista de codigo Private WithEvents rsMySQL As ADODB.Recordset 'rsMySQL é o recordset que sera usado na conexao Dim mblnAddMode As Boolean |
Neste código estamos usando a palavra chave WithEvents . Ela é pode ser usada com Dim , Private e Public e é opcional . Sua utilização indica que a variável objeto usada pode responder a eventos disparados pela objeto ActiveX. Dessa forma podemos codificar eventos disparados pelo objeto ActiveX. Fazemos isto no evento MoveComplete do objeto rsMySQL .
b- O código do botão - Abrir Conexão -
Private
Sub cmdAbreConexao_Click() Dim strConnect As String 'esta é a string de conexao devera conter a informacao sobre o provedor e o caminho do banco de dados Dim strProvider As String 'guarda o nome do provedor Dim strDataSource As String 'guarda a fonte de dados Dim strDataBaseName As String 'nome do banco de dados Dim usr_id As String ' identificacao do usuario para o banco de dados Dim pass As String ' a senha (se tiver) para o banco de dados Dim mySqlIP As String ' o endereco ip da maquina na qual esta o mySql mySqlIP = "127.0.0.1" ' a localizacao do usuario (localhost) usr_id = "macoratti" ' identificacao pass = "numsey" ' senha ' string de conexao strConnect = "driver={MySQL};server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=clientes" Set adoDataConn = New ADODB.Connection 'preparando o objeto connection adoDataConn.CursorLocation = adUseClient 'usamos um cursor do lado do cliente pois os dados 'serao acessados na maquina do cliente e nao de um servidor adoDataConn.Open strConnect 'Abre o objeto connection lblStringdeConexao.Caption = strConnect 'Exibe a string de conexao Set rsMySQL = New ADODB.Recordset 'Prepara o recordset rsMySQL.CursorType = adOpenStatic 'Este é o unico tipo de cursor a ser usado com um cursor localizado no lado do cliente rsMySQL.CursorLocation = adUseClient 'estamos usando o cursor no cliente rsMySQL.LockType = adLockPessimistic 'Isto garente que o registros que esta sendo editado pode ser salvo rsMySQL.Source = "Select * From clientes" 'altere para tabela que desejar 'Para a fonte de dados usamos uma instrucal SQL rsMySQL.ActiveConnection = adoDataConn 'O recordset precisa saber qual a conexao em uso rsMySQL.Open 'abre o recordset com isto o evento MoveComplete sera disparado cmdAbreConexao.Enabled = False 'Desabilitamos o botão para nao iniciar um nova conexao cmdFechaConexao.Enabled = True 'Permitimos fechar a conexao 'Agora podemos habilitar a navegacao pelos registros do recordset HabilitaNavegacao cmdInclui.Enabled = True cmdExclui.Enabled = True cmdEdita.Enabled = True lblBOF.Caption = rsMySQL.BOF lblEOF.Caption = rsMySQL.EOF End Sub |
Como funciona:
- Usamos as variáveis :
mySqlIP =
"127.0.0.1"
' a localizacao do
usuario (localhost)
usr_id =
"macoratti"
'
identificacao
pass =
"numsey" ' senha
Para definir o usuário a senha e a identificação do servidor ( como estamos em um máquina desktop , o servidor tem o endereço da máquina local - 127.0.0.1 ). Numa base de dados Cliente/Servidor você sempre vai ter que definir : usuário , senha , servidor e banco de dados.
- Definimos a string de conexão:
' string de
conexao
strConnect =
"driver={MySQL};server=" & mySqlIP &
";uid=" & usr_id & ";pwd=" & pass
& ";database=clientes"
Aqui usamos as variáveis acima definidas e definimos o banco de dados que vamos acessar - Clientes. O driver usado é o driver {MySQL} . Para poder usar o driver você tem que instalar o MyODBC.
- Após definir a localização do cursor( adoDataConn.CursorLocation = adUseClient) abrimos a conexão usando a string definida acima:
lblStringdeConexao.Caption = strConnect
- A seguir declaramos uma instância do objeto Recordset e definimos as propriedades como abaixo:
rsMySQL.CursorType
= adOpenStatic
rsMySQL.CursorLocation = adUseClient
rsMySQL.LockType = adLockPessimistic
- Finalmente definimos a tabela que desejamos acessar e os campos que vamos tratar, ativamos a conexão e abrimos o recordset.
rsMySQL.Source =
"Select * From clientes"
rsMySQL.ActiveConnection = adoDataConn
rsMySQL.Open
- Agora temos acesso a tabela clientes e aos seus registros . Temos as opções de navegação e de manutenção da base de dados que você pode testar e que eu não vou detalhar.
OBS: Ao utilizar ADO e MyODBC para se
conectar ao MySQL você deve ficar atento a algumas
propriedades padrão que não são suportadas pelo MySQL
, por exemplo : 1- Se você usar a propriedade CursorLocation como adUseServer a propriedade RecordCount irá retornar o valor igual a -1. Para obter o valor correto você deve definir CursorLocation como adUseClient. 2- Para estar apto a atualizar uma tabela você deve definir uma chave primária para esta tabela. O VB e a ADO não pode tratar com o tipo Big Integers e logo vai ocorrer uma erro. Para resolver isto defina OPTION=16834 na string de conexão ODBC ou altere as colunas BIGINT para a opção INT na conexão MyODBC. |
O importante foi mostrar que o acesso a uma base de dados MySQL usando um driver ODBC é muito simples : não requer prática nem muita habilidade...
Para fazer o download do projeto - clique aqui - VBMySQL-ODBC.zip
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: