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