VB .NET - CRUD com o SQLite no VS 2013 - III


 Esse artigo continua vou mostrar como acessar o banco de dados SQLite e realizar as operações CRUD usando o VS 2013 e a linguagem VB .NET. Nossa tarefa será criar um banco de dados usando a ferramenta SQLIte Administrator e realizar as operações CRUD no projeto criado na primeira parte do artigo.


Na segunda parte do artigo eu inclui um novo projeto chamado
DAL à nossa solução e neste projeto criei a classe AcessoDB onde defini os métodos que irei usar para acessar e persistir os dados no banco de dados SQLite.

 

Neste exemplo eu não vou criar uma camada de negócios (BLL) para deixar o exemplo mais simples, e, deixo isso como um exercício para você fazer. Basta incluir um novo projeto e criar uma classe que chame os métodos da camada DAL.

 

Dessa forma iremos acessar a camada de acesso a dados diretamente da camada de apresentação, o que não é uma boa prática, mas se justifica pela simplicidade do exemplo e pela preguiça do autor.

 

Para que possamos enxergar a camada DAL temos que incluir uma referência no projeto Windows Forms. Clique com o botão direito do mouse sobre o projeto Acessando_SQLite e no menu suspenso clique em Add -> Reference;

 

Selecione a guia Projects e marque o projeto DAL conforme mostra a figura abaixo:

 

 

Agora podemos chamar os métodos da camada DAL a partir da camada de apresentação. (Lembre-se que isso fere o princípio da separação das responsabilidades)

 

Vamos agora abrir o nosso projeto Windows Forms onde já temos o formulário criado e implementar as funcionalidades para realizar o CRUD na tabela Contatos.

 

Alterando, Excluindo e Incluindo dados no SQLite


Com o formulário form1.vb aberto vamos iniciar incluindo uma declaração ao projeto DAL no formulário:

Imports DAL

Nota: A simples referência à camada de acesso a dados na camada de apresentação já é uma indicação de algo não 'cheira bem' no seu código.

A seguir vamos definir uma variável que irá conter uma instrução SQL para selecionar todos os registros da tabela Contatos:

Dim selecionarDados As String = "Select * from Contatos"

Nota: Se você criar a camada de negócios deverá remover todos as instruções SQL da camada de apresentação para esta camada.

 

Agora vamos definir no evento Load do formulário o código para carregar os dados da tabela Contatos e exibir no DataGridView do formulário:

 

    Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        dgvContatos.DataSource = AcessoDB.getRegistro(selecionarDados)
    End Sub

 

Vamos criar um método chamado LimparControles para limpar  as caixas de texto do formulário :

 

Private Sub limparControles(control As Control)
        For Each textBox As Control In control.Controls
            If TypeOf textBox Is TextBox Then
                DirectCast(textBox, TextBox).Text = String.Empty
            End If
        Next
    End Sub

 

Também vamos definir no evento Cell_Enter do DataGridView o código que permite obter os dados de uma linha selecionada no grid exibindo os valores das células nas caixas de texto do formulário:

 

Private Sub dgvContatos_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgvContatos.CellEnter
        Try
            txtID.Text = dgvContatos.Rows(e.RowIndex).Cells(0).Value
            txtNome.Text = dgvContatos.Rows(e.RowIndex).Cells(1).Value
            txtEmail.Text = dgvContatos.Rows(e.RowIndex).Cells(2).Value
        Catch ex As Exception
        End Try
    End Sub

 

Agora em cada evento Click de cada um dos botões de comando vamos definir o código que realizar a respectiva funcionalidade descrita no título do botão.

 

Em cada implementação estamos definindo o respectivo comando SQL , definindo os parâmetros a serem usados e chamando o respectivo método da classe AcessoDB() para realizar a operação. A seguir chamamos novamente o método para atualizar a exibição no DataGridView.

 

1 - Alterar

 

  Private Sub btnAlterar_Click(sender As Object, e As EventArgs) Handles btnAlterar.Click
        If txtNome.Text = String.Empty OrElse txtEmail.Text = String.Empty Then
            MessageBox.Show("Informe os valores para Id, nome e email do contato a ser alterado")
            Return
        Else
            If (MessageBox.Show("Deseja alterar os dados deste contato ?", "Alterar", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes) Then
                Try
                    Dim sqlAlterar As String = "Update Contatos set nome = @nome, email=@email where Id=@id"
                    Dim campos As String() = {"@Nome", "@Email", "@Id"}
                    Dim valores As String() = {txtNome.Text, txtEmail.Text, txtID.Text}
                    AcessoDB.Alterar(campos, valores, sqlAlterar)
                    dgvContatos.DataSource = AcessoDB.getRegistro(selecionarDados)
                Catch ex As Exception
                    MessageBox.Show("Erro " + ex.Message)
                End Try
            End If
        End If
    End Sub

 

2- Incluir

 

Private Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click
        If txtNome.Text = String.Empty OrElse txtEmail.Text = String.Empty Then
            MessageBox.Show("Informe os valores para nome e email do contato.")
            Return
        Else
            If (MessageBox.Show("Deseja incluir este Contato ?", "Incluir", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes) Then
                Try
                    Dim sqlInsert As String = "Insert into Contatos (nome,email) values (@Nome,@Email)"
                    Dim campos As String() = {"@Nome", "@Email"}
                    Dim valores As String() = {txtNome.Text, txtEmail.Text}
                    AcessoDB.Salvar(campos, valores, sqlInsert)
                    dgvContatos.DataSource = AcessoDB.getRegistro(selecionarDados)
                Catch ex As Exception
                    MessageBox.Show("Erro " + ex.Message)
                End Try
            End If
        End If
    End Sub

 

3- Excluir

 

  Private Sub btnExcluir_Click(sender As Object, e As EventArgs) Handles btnExcluir.Click
        If txtID.Text = String.Empty Then
            MessageBox.Show("Selecione um contato para excluir.")
            Return
        Else
            If (MessageBox.Show("Confirma exclusão deste registro ?", "Excluir", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes) Then
                Try
                    Dim sqlDelete As String = "Delete from Contatos Where Id = @Id"
                    Dim campos As String() = {"Id"}
                    Dim valores As String() = {txtID.Text}
                    AcessoDB.Deletar(campos, valores, sqlDelete)
                    dgvContatos.DataSource = AcessoDB.getRegistro(selecionarDados)
                Catch ex As Exception
                    MessageBox.Show("Erro " + ex.Message)
                End Try
            End If
        End If
    End Sub

 

4- Sair

 

Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
        If (MessageBox.Show("Deseja encerrar a aplicação  ?", "Sair", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes) Then
            Application.Exit()
        End If
    End Sub

 

Executando o projeto e realizando algumas operações iremos obter o seguinte resultado:

 

Neste exemplo mostrei como podemos acessar e usar um banco de dados SQLite na plataforma .NET usando o Visual Studio 2013 Express e a linguagem VB .NET.

Você pode incrementar o projeto criando a camada de acesso a dados, refinando o tratamento de erros, implementando outras funcionalidades como Localizar dados dos contatos, etc.

Pegue o projeto completo aqui:  Acessando_SQLite.zip (sem as referências ao SQLite,Entity Framework)

Falou-lhes, pois, Jesus outra vez, dizendo: Eu sou a luz do mundo; quem me segue não andará em trevas, mas terá a luz da vida.
João 8:12

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti