Sei sulla pagina 1di 5

Visual Basic - Acessando uma base de dados MySQL com ADO usando um driver ODBC

No meu primeiro artigo sobre VB e MySQL - Visual Basic - Acessando uma base de dados MySQL com ADO , abordei os conceitos bsicos requeridos para instalar e criar um banco de dados e uma tabela no MySQL e a seguir mostrei como fazer uma conexo com ADO usando um DSN. Neste artigo irei mostrar como fazer uma conexo com o MySQL usando um driver ODBC , lembrando que podemos usar tambm um provedor OLEDB. 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 alm de ser uma boa opo GRTIS... (deu para convence?) Para que as coisas funcionem voc vai precisar ter os seguintes componentes instalados:

1. MySQL - www.mysql.com 2. MyOBDC - www.mysql.com


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 . Aps instalar o MySQL e o MyOBDC , voc deve executar o programa WinMySQLAdmin que est no diretrio x:\mysql\bin . Quando executado pela primeira vez o programa ir tentar localizar o arquivo my.ini no diretrio Windows , se o arquivo no for encontrado a tela abaixo ser exibida

informe o nome do usurio e a senha e clique no boto 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) Para exibir a janela do WinMySQLAdmin clique sobre o icone e escolha a opo Show Me. Com a janela exibida , selecione a aba DataBases e clique com o boto direito do mouse rea Databases. No menu Pop Up que ir surge selecione a opo Create Database

A Seguir na janela Adding Database informe o nome do banco de dados que deseja criar e clique no boto - Create the Database. Pronto seu banco de dados foi criado.

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 formulrio padro conforme o layout da figura abaixo:

- Faa uma referncia biblioteca Microsoft ActiveX Data Objects 2.X LIbrary no seu projeto

1. Ao iniciar o aplicativo a tela acima ir surgir; neste momento no h conexo ainda com o banco de

dados. 2. Para criar uma conexo clique no boto - Abrir Conexo -; A conexo feita e a string de conexo exibida na label - String de conexo. 3. Os registros so ento exibidos e as opes para navegao e manuteno da base de dados tornamse ativas. Vou explicar somente o cdigo usado para criar a conexo com a base de dados, os cdigos usados para outras tarefas j foram comentados em artigos anteriores. a - O Cdigo da seo General Declarations Option Explicit Private WithEvents adoDataConn As ADODB.Connection 'com withevents voc pode codificar os eventos para a conexo com 'recordset e tambm pode localizar o objeto na lista de cdigo Private WithEvents rsMySQL As ADODB.Recordset 'rsMySQL o recordset que ser usado na conexo Dim mblnAddMode As Boolean Neste cdigo estamos usando a palavra chave WithEvents . Ela pode ser usada com Dim , Private e Public e opcional . Sua utilizao indica que a varivel objeto usada pode responder a eventos disparados pelo objeto ActiveX. Dessa forma podemos codificar eventos disparados pelo objeto ActiveX. Fazemos isto no evento MoveComplete do objeto rsMySQL . b- O cdigo do boto - Abrir Conexo Private Sub cmdAbreConexao_Click() Dim strConnect As String 'esta a string de conexo devera conter a informao 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 Dim pass As String Dim mySqlIP As String mySqlIP = "127.0.0.1" ' identificao do usurio para o banco de dados ' a senha (se tiver) para o banco de dados ' o endereo ip da maquina na qual esta o mySql ' a localizao do usurio (localhost)

usr_id = "macoratti" ' identificao pass = "numsey" ' senha ' string de conexo 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 'sero acessados na maquina do cliente e no de um servidor adoDataConn.Open strConnect 'Abre o objeto connection lblStringdeConexao.Caption = strConnect 'Exibe a string de conexo

Set rsMySQL = New ADODB.Recordset 'Prepara o recordset rsMySQL.CursorType = adOpenStatic 'Este o nico 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 garante 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 instruo SQL rsMySQL.ActiveConnection = adoDataConn 'O recordset precisa saber qual a conexo em uso rsMySQL.Open 'abre o recordset com isto o evento MoveComplete ser disparado cmdAbreConexao.Enabled = False 'Desabilitamos o boto para no iniciar um nova conexo cmdFechaConexao.Enabled = True 'Permitimos fechar a conexo 'Agora podemos habilitar a navegao 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 variveis : mySqlIP = "127.0.0.1" ' a localizao do usurio (localhost) usr_id = "macoratti" ' identificao pass = "numsey" ' senha Para definir o usurio a senha e a identificao do servidor ( como estamos em um mquina desktop , o servidor tem o endereo da mquina local - 127.0.0.1 ). Numa base de dados Cliente/Servidor voc sempre vai ter que definir : usurio , senha , servidor e banco de dados. - Definimos a string de conexo: ' string de conexo strConnect = "driver={MySQL};server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=clientes" Aqui usamos as variveis 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. - Aps definir a localizao do cursor (adoDataConn.CursorLocation = adUseClient) abrimos a conexo usando a string definida acima: lblStringdeConexao.Caption = strConnect - A seguir declaramos uma instncia 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 conexo 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 opes de navegao e de manuteno da base de dados que voc pode testar e que eu no vou detalhar.
OBS: Ao utilizar ADO e MyODBC para se conectar ao MySQL voc deve ficar atento a algumas propriedades padro que no so 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 primria para esta tabela. O VB e a ADO no pode tratar com o tipo Big Integers e logo vai ocorrer uma erro. Para resolver isto defina OPTION=16834 na string de conexo ODBC ou altere as colunas BIGINT para a opo INT na conexo MyODBC.

O importante foi mostrar que o acesso a uma base de dados MySQL usando um driver ODBC muito simples : no requer prtica nem muita habilidade... Para fazer o download do projeto - clique aqui - VBMySQL-ODBC.zip Jos Carlos Macoratti

Potrebbero piacerti anche