Olá, nesta terceira e última parte do artigo iremos construir uma aplicação simples para utilizar nossa DLL criada. No artigo passado, aprendemos como criar as classes filhas para acessar as bases de dados.
Iremos criar um aplicativo que irá efetuar um cadastro simples de clientes. Para isso, é necessário criar as bases de dados nos respectivos bancos utilizados nestes artigos, a saber: MySql, Postgres e Access. Abaixo está o código SQL para criar a tabela de nome cliente:
CREATE TABLE cliente (
id int not null auto_increment,
nome VARCHAR(100) NOT NULL,
cpf CHAR(14) NOT NULL,
nascimento DATE,
endereco VARCHAR(100),
PRIMARY KEY(id)
)
Crie um novo projeto do tipo Windows Forms Application de nome Cliente. Deixe o form da aplicação com o layout parecido com o seguinte:
Adicione nas referências do projeto a DLL que criamos (persistencia.dll) e no código do formulário adicione a declaração abaixo antes da declaração da classe do form:
Imports Persistencia
Declare as seguintes variáveis e propriedades no form:
Private base As clsDatabase.BaseDeDados
Private servidor As String = ""
Private banco As String = ""
Private usuario As String = ""
Private senha As String = ""
Private schema As String = ""
Private cliente_id As Integer = 0
Private _nome_tabela As String = "cliente"
Private ReadOnly Property NomeTabela As String
Get
If Me.base = clsDatabase.BaseDeDados.Postgres Then
Return Me.schema & "." & Me._nome_tabela
Else
Return Me._nome_tabela
End If
End Get
End Property
No evento Load do formulário iremos passar para a dll as configurações do banco de dados e efetuar a conexão com o banco. Se não efetuar a conexão uma mensagem irá nos avisar, caso contrário, carregaremos o grid com os clientes já cadastrados no banco.
Private Sub frmCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
base = clsDatabase.BaseDeDados.MySql
servidor = ""
banco = ""
usuario = ""
senha = ""
schema = ""
clsDatabase.setConfiguracoes(Me.base, Me.servidor, Me.banco, Me.usuario, Me.senha, Me.schema)
If Not clsDatabase.AbreConexao Then
MsgBox("Não foi possível abrir a conexão. Erro: " & clsDatabase.Mensagem, MsgBoxStyle.Critical)
End
End If
Me.carregarGrid()
End Sub
Private Sub carregarGrid()
Dim tabela As DataTable
Dim oComando As IDbCommand
oComando = clsDatabase.getNewCommand()
With oComando
.CommandText = String.Format("SELECT * FROM {0}", Me.NomeTabela)
.CommandType = CommandType.Text
End With
tabela = clsDatabase.pegarResultSet(oComando)
Me.grdClientes.DataSource = tabela
End Sub
Agora, ao executarmos o aplicativo ele nos mostrará uma janela com os campos para cadastrarmos um novo cliente e uma lista com os já cadastrados. Para cadastrarmos um novo cliente, iremos inserir o seguinte código no click do botão salvar e do botão cancelar.
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click
If Me.txtNome.Text.Trim.Length <= 0 Then
MsgBox("Informe o nome do cliente", MsgBoxStyle.Exclamation)
Me.txtNome.Focus()
Exit Sub
End If
If Me.txtCpf.Text.Trim.Length <= 0 Then
MsgBox("Informe o CPF do cliente", MsgBoxStyle.Exclamation)
Me.txtCpf.Focus()
Exit Sub
End If
Dim oComando As IDbCommand
Dim data As String = ""
If Me.txtNascimento.MaskCompleted Then
data = Me.txtNascimento.Text
data = data.Substring(6, 4) & "-" & data.Substring(3, 2) & "-" & data.Substring(0, 2)
End If
oComando = clsDatabase.getNewCommand()
With oComando
If Me.cliente_id > 0 Then
.CommandText = String.Format("UPDATE {0} SET nome = '{1}', cpf = '{2}', nascimento = '{3}', endereco = '{4}' WHERE id = {5}", Me.NomeTabela, Me.txtNome.Text, Me.txtCpf.Text, data, Me.txtEndereco.Text, Me.cliente_id)
Else
.CommandText = String.Format("INSERT INTO {0} (nome, cpf, nascimento, endereco) VALUES ('{1}', '{2}', '{3}', '{4}')", Me.NomeTabela, Me.txtNome.Text, Me.txtCpf.Text, data, Me.txtEndereco.Text)
End If
.CommandType = CommandType.Text
End With
Dim retorno As Long = clsDatabase.ExecutaComando(oComando)
If retorno <= 0 Then
MsgBox(clsDatabase.Mensagem, MsgBoxStyle.Critical)
Else
Me.limparCampos()
Me.grdClientes.Enabled = True
Me.carregarGrid()
End If
End Sub
Private Sub limparCampos()
Me.txtCpf.Text = ""
Me.txtEndereco.Text = ""
Me.txtNascimento.Text = ""
Me.txtNome.Text = ""
Me.cliente_id = 0
End Sub
Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
Me.limparCampos()
Me.grdClientes.Enabled = True
End Sub
Para editarmos as informações de um cliente já cadastrado, iremos inserir o seguinte código no evento DoubleClick do grid.
Private Sub grdClientes_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grdClientes.DoubleClick
If Me.grdClientes.CurrentRow IsNot Nothing Then
Dim tabela As DataTable
Dim oComando As IDbCommand
oComando = clsDatabase.getNewCommand()
Me.cliente_id = Me.grdClientes.CurrentRow.Cells(0).Value
With oComando
.CommandText = String.Format("SELECT * FROM {0} WHERE id = {1}", Me.NomeTabela, cliente_id)
.CommandType = CommandType.Text
End With
tabela = clsDatabase.pegarResultSet(oComando)
If tabela IsNot Nothing Then
If tabela.Rows.Count > 0 Then
Me.txtNome.Text = tabela.Rows(0).Item("nome").ToString
Me.txtCpf.Text = tabela.Rows(0).Item("cpf").ToString
Me.txtNascimento.Text = tabela.Rows(0).Item("nascimento").ToString
Me.txtEndereco.Text = tabela.Rows(0).Item("endereco").ToString
Me.grdClientes.Enabled = False
End If
End If
End If
End Sub
Agora já está pronta nossa aplicação que utiliza a DLL que construímos. Para informar qual banco iremos utilizar, basta informar as configurações do banco correspondente no evento Load do form.
Muita coisa pode ser melhorada e implementada neste código, como por exemplo, criar classes para cada tabela do banco de dados e efetuar dentro delas as chamadas a DLL.
Agora você já está apto a utilizar nossa DLL em suas aplicações e não ter mais dor de cabeça com banco de dados.
Qualquer dúvida é só mandar um e-mail: domingosjunior87@gmail.com