Como criar acesso genérico a banco de dados - Parte 3

Nesta terceira e última parte do artigo iremos construir uma aplicação simples para utilizar nossa DLL criada.

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 ", 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 SET nome = '', cpf = '', nascimento = '', endereco = '' WHERE id = ", Me.NomeTabela, Me.txtNome.Text, Me.txtCpf.Text, data, Me.txtEndereco.Text, Me.cliente_id)

Else

.CommandText = String.Format("INSERT INTO (nome, cpf, nascimento, endereco) VALUES ('', '', '', '')", 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 WHERE id = ", 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
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados