VB e MySQL - Incluindo, Atualizando e Excluindo dados
Neste artigo iremos criar um aplicativo para gerenciar os dados de uma base de dados do MySQL. Iremos mostrar como acessar , incluir , alterar além de criar banco de dados no MySQL.
O projeto irá possui dois formulários : frmconectar.frm e frmPrincipal.frm e um módulo : mMainMySQL.bas
Para testar este exemplo você deverá esta com o MySQL instalado e ativo conforme já visto em artigos anteriores.
Abra o VB e crie um novo projeto do tipo StandardEXE e no formulário padrão altere o seu nome para : frmconectar
Adicione um módulo ao seu projeto e de insira nele as seguintes linhas de código:
Option
Explicit
Public gConexao As ADODB.Connection
Public SQL As String
- A seguir insira os controles : TextBox , comboBox , Frame e
commandButton conforme a figura abaixo:
Acima temos o formulário em tempo de desenho e em tempo de execução. Nele o usuário irá informar o nome do Host , o usuário a senha e o nome do banco de dados que deseja conectar. Podrá também criar um novo banco de dados clicando no botão Novo e informando o nome do banco de dados conforme acima. A rotina que cria o banco de dados é dada a seguir :
Sub
CriaBancoDados() Dim pConexao As ADODB.Connection Dim strTemp As String On Error GoTo trata_erro On Error Resume Next Set pConexao = New ADODB.Connection pConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};user=" & txtNomeUsuario & ";password=" & txtPassword & ";server=" & txtHost & ";option=20499" If pConexao.State = 1 Then strTemp = InputBox("Informe o nome do novo Banco de dados :", "Cria Banco de Dados") If Trim$(strTemp) <> "" Then pConexao.Execute "Create Database " & Trim$(strTemp), , adExecuteNoRecords RefazerListaDB cmbBancoDados = strTemp cmbBancoDados.SetFocus End If Else MsgBox "Não foi possível estabelecer comunicação com o Servidor. Verifique seu Host e sua chave/Senha.", vbCritical, "Impossível criar Banco de dados." End If Exit Sub trata_erro: MsgBox Err.Number & " " & Err.Description, vbCritical, "Erro durante a criação do banco de dados." End Sub |
A rotina RefazerListaDB verifica as tabelas disponíveis no banco de dados atual e as exibe na combo. O código é o seguinte: |
Sub
RefazerListaDB() Dim pConexao As ADODB.Connection Dim pRs As ADODB.Recordset Dim strTemp As String Dim TempArray() As String Dim i As Long Dim ValorAntigo As String Dim ValorAntigoNaLista As Boolean On Error Resume Next ValorAntigo = cmbBancoDados.Text cmbBancoDados.Clear ValorAntigoNaLista = False Set pConexao = New ADODB.Connection pConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};user=" & txtNomeUsuario & ";password=" & txtPassword & ";server=" & txtHost & ";option=20499" If pConexao.State = 1 Then Set pRs = New ADODB.Recordset pRs.Open " Databases", pConexao, adOpenForwardOnly, adLockReadOnly, adCmdText If Not pRs.EOF Then strTemp = Trim$(pRs.GetString(adClipString, , "", vbCrLf)) If strTemp <> "" Then TempArray = Split(strTemp, vbCrLf) For i = 0 To UBound(TempArray) If Trim$(TempArray(i)) <> "" And LCase$(Trim$(TempArray(i))) <> "mysql" And LCase$(Trim$(TempArray(i))) <> "temp" Then cmbBancoDados.AddItem Trim$(TempArray(i)) If Trim$(TempArray(i)) = ValorAntigo Then ValorAntigoNaLista = True End If Next i End If End If End If If ValorAntigoNaLista Then cmbBancoDados.Text = ValorAntigo Else cmbBancoDados.Text = "" End Sub |
Após criar o banco de dados podemos criar a tabela Anotacoes e inserir alguns registros nela.O código é dado a seguir: |
Sub
CriaTabelas() Dim pRs As ADODB.Recordset SQL = "CREATE TABLE IF NOT EXISTS `Anotacoes` (" _ & "`Nome` varchar(100) NOT NULL default '', " _ & "`Local` varchar(100) NOT NULL default '', " _ & "`Endereco` varchar(100) NOT NULL default '', " _ & "`Observacao` text NOT NULL, " _ & "PRIMARY KEY (`Nome`) " _ & ") TYPE=MyISAM" gConexao.Execute SQL, , adExecuteNoRecords Set pRs = New ADODB.Recordset SQL = "Select Nome, Local, Endereco, Observacao From Anotacoes " pRs.Open SQL, gConexao, adOpenStatic, adLockOptimistic, adCmdText If pRs.EOF Then With pRs .AddNew .Fields("Nome") = "Jose C. Macoratti" .Fields("Local") = "Brasilia - DF" .Fields("Endereco") = "Av. do Exercito , 12345" .Fields("Observacao") = "Visite o site www.macoratti.net" .Update .AddNew .Fields("Nome") = "Jessica Naara Lang" .Fields("Local") = "São Paulo - SP" .Fields("Endereco") = "Al. Princesa Isabel , 120 - 4o. Andar" .Fields("Observacao") = "Estou esperando o meu presente." .Update .AddNew .Fields("Nome") = "Janice Rachel" .Fields("Local") = "Rio Grande do Sul - RS" .Fields("Endereco") = "Av. 12 de Janeiro , 754 " .Fields("Observacao") = "Não suporto mais este garoto." .Update .AddNew .Fields("Nome") = "Miriam S. Estela" .Fields("Local") = "Rio de Janeiro - RJ" .Fields("Endereco") = "R. dos Inconfidentes , 348" .Fields("Observacao") = "Esta bem legal ficar aqui sem fazer nada." .Update .AddNew .Fields("Nome") = "Jefferson A. Lara" .Fields("Local") = "Minas Gerais - MG" .Fields("Endereco") = "Av. do Aeroporto , 1209" .Fields("Observacao") = "Detesto fazer lição de casa." .Update End With End If pRs.Close Set pRs = Nothing End Sub |
Neste código estou usando os métodos ADO AddNew/Update para incluir novos registros no banco de dados
Uma rotina interessente é a rotina que faz a conexão com o MySQL mostrada abaixo:
Private
Sub cmdConnect_Click() On Error GoTo trata_erro If Trim$(cmbBancoDados) = "" Then MsgBox "Você precisa selecionar um banco de dados.", vbCritical, "Informação Inválida" Exit Sub End If Me.MousePointer = vbHourglass Set gConexao = New ADODB.Connection gConexao.ConnectionTimeout = 60 gConexao.CommandTimeout = 400 gConexao.CursorLocation = adUseClient gConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};" _ & "user=" & txtNomeUsuario _ & ";password=" & txtPassword _ & ";database=" & cmbBancoDados _ & ";server=" & txtHost _ & ";option=" & (1 + 2 + 8 + 32 + 2048 + 16384) Me.MousePointer = vbNormal If gConexao.State = 1 Then SaveSetting App.Title, "Settings", "txtHost", txtHost SaveSetting App.Title, "Settings", "txtNomeUsuario", txtNomeUsuario SaveSetting App.Title, "Settings", "cmbBancoDados", cmbBancoDados CriaTabelas frmPrincipal.Show vbModal Unload Me Else MsgBox "Não foi possível estabelecer a conexão. Verifique as configurações e tente novamente.", vbCritical, "Erro durante a conexão..." End If Exit Sub trata_erro: MsgBox Err.Number & " " & Err.Description, vbCritical, "Erro durante a conexão..." End Sub |
Após efetuar a conexão o formulário principal será exibido com os dados da tabela. Para selecionar um registro basta clicar na coluna Nome e o mesmo será exibido e estará pronto para ser gerenciado.
Estou usando um MSFlexGrid para exibir os dados. Ao clicar em um registro somente a coluna nome será usada para pesquisar os registros e exibir os dados nas caixas de texto. Agora você pode alterar, Deletar e Cancelar qualquer registro. Para incluir um registro basta você digitar os dados e clicar em Salvar.
Este formulário não possui nenhuma novidade em termos de código que você já não tenha visto no site.
Melhor do que ficar falando e disponibilizar o projeto pronto para que você mesmo faça os teste. Pegue aqui -> vbmysql.zip
Eu sei , é apenas Visual Basic , mas eu gosto !
José Carlos Macoratti