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


 Neste artigo vou mostrar como acessar o banco de dados SQLite e realizar as operações CRUD usando o VS 2013 e a linguagem VB .NET.


O SQLite é um banco de dados enxuto, fácil de instalar, manter e transportar e, por estes motivos, é indicado para aplicações que não requerem um banco de dados relacional de porte, afinal você não precisa de um "canhão para matar uma mosca" não é mesmo ?
 

O SQLite 3 é um SGBD(Sistema de Gerenciamento de Bancos de Dados) open source incrivelmente leve, e que funciona sem nenhuma configuração. Além disso, ele não possui um processo servidor, existindo assim apenas um processo responsável por ler e escrever os dados, sendo estas operações feitas diretamente no sistema de arquivos local.

Por se tratar de um SGBD sem um processo servidor, o SQLite 3 é auto contido, podendo assim ser distribuído junto com as aplicações. Na verdade, devido a sua natureza, este é um cenário de uso ideal para ele, principalmente quando a aplicação em questão não requer um SGBD mais robusto.

Para mergulhar fundo no SQLite visite o site oficial : http://www.sqlite.org/

A seguir algumas características do SQLite:

Se você esta entusiasmado com todas essas características lembre-se que ele é indicado apenas para pequenas aplicações.

Os tipos de dados suportados pelo SQLite são: INTEGER, FLOAT, REAL, NUMERIC, BOOLEAN, TIME, DATE, TIMESTAMP, VARCHAR, NVARCHAR, TEXT E BLOB.

Um detalhe, o SQLite esta sob domínio público, e assim qualquer um pode copiar, modificar, publicar, usar, compilar, vender ou distribuir o código original do SQLite para propósitos comerciais ou não comerciais. Não há restrição alguma no SQLite.

O SQLite suporta a maior parte dos recursos da linguagem SQL padrão com algumas limitações.

Como o SQLite escreve e lê para um arquivo em um drive as únicas permissões disponíveis são as permissões de leitura e escrita para o próprio arquivo então não há como usar os comandos GRANT e REVOKE.

Para uma relação das limitações visite este link: http://www.sqlite.org/omitted.html

O SQLite dá suporte a transações ACID (Atomic, Consistent, Isolated and Durable). O que significa que uma transação no SQLite irá ocorrer completamente ou não.

Por tudo isso creio que vale a pena considerar a utilização do SQLite quando o cenário for favorável a sua utilização mas lembre-se que ele possui limitações e que isso nem sempre será possível.

Para administrar o banco de dados SQLite existem muitas ferramentas que você vai encontrar na web. Umas são pagas e outras grátis.

Neste artigo eu vou usar a ferramenta SQLIte Administrator que pode ser baixada neste link: http://sqliteadmin.orbmu2k.de/ . Ela é grátis e ainda pode ser customizada para a língua portuguesa.

Existe também o SQLite DataBase Browser - http://sourceforge.net/projects/sqlitebrowser/ que você pode usar como uma ferramenta visual para dar manutenção nos bancos de dados SQLite.

Criando o projeto no Visual Studio Express 2013

A primeira coisa que vamos fazer é criar um novo projeto no Visual Studio Express 2013 for windows desktop com o nome de Acessando_SQLite, o template Windows Forms Application e a linguagem VB .NET:

Será criado um projeto com um formulário form1.vb. Vamos incluir a partir da ToolBox os seguintes controles no formulário:

Nota:  A caixa de texto txtID deve ser ter sua propriedade ReadOnly definida como True.

Disponha os controles no formulário form1.vb conforme o leiaute da figura abaixo:

Escolhendo a versão do SQLite para o seu Visual Studio por sua conta e risco

Após criar o projeto e definir o leiaute do formulário temos uma tarefa ingrata a realizar : Escolher a versão correta do SQLite para o seu Visual Studio.

Neste link : http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki estão as instruções e as versões do SQLite para cada versão do Visual Studio levando em conta a versão do .NET Framework e o seu sistema operacional (32 ou 64).

Se você não sabe qual a versão do .NET Framework corresponde à versão do seu Visual Studio veja a tabela abaixo:

Version
number
CLR
version
Release
date
Included in Replaces
Development tool Windows Windows Server
1.0 1.0 2002-02-13 Visual Studio .NET[4] N/A N/A N/A
1.1 1.1 2003-04-24 Visual Studio .NET 2003[4] N/A 2003 1.0[5]
2.0 2.0 2005-11-07 Visual Studio 2005[6] N/A 2003, 2003 R2,[7] 2008 SP2, 2008 R2 SP1 N/A
3.0 2.0 2006-11-06 Expression Blend[8][a] Vista 2008 SP2, 2008 R2 SP1 2.0[3]
3.5 2.0 2007-11-19 Visual Studio 2008[9] 7, 8,[b] 8.1[b] 2008 R2 SP1 2.0, 3.0[3]
4.0 4 2010-04-12 Visual Studio 2010[10] N/A N/A N/A
4.5 4 2012-08-15 Visual Studio 2012[11] 8 2012 4.0[3]
4.5.1 4 2013-10-17 Visual Studio 2013[12] 8.1 2012 R2 4.0, 4.5[3]
4.5.2 4 2014-05-05 N/A N/A N/A 4.0, 4.5, 4.5.1[3]

fonte: http://en.wikipedia.org/wiki/.NET_Framework_version_history

Então para o Visual Studio 2013 rodando em um Windows 8.1 com 64 bits a versão seria obtida neste link da página: sqlite-netFx451-static-binary-bundle-x64-2013-1.0.95.0.zip

Tome cuidado para não selecionar a versão incorreta pois poderá não funcionar.

Escolhendo a versão do SQLite para o seu Visual Studio via Nuget

Se você não quer ter todo esse trabalho então use o Nuget.

Não tem o Nuget instalado ainda !!! Então pegue aqui : NuGet Package Manager

Não sabe usar o Nuget ?  Então veja este artigo :  .NET - Apresentando o Nuget - Macoratti.net

No menu TOOLS do Visual Studio clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution :

Na janela que será aberta no canto direito superior digite sqlite e a seguir selecione o item : System.Data.SQLite (x86/x64) e clique no botão Install.

 

Depois confirme e proceda à instalação do pacote no seu projeto.

 

 

Ao final você deverá visualizar as seguintes referências no seu projeto (para ver as referências clique no ícone Show All Files) :

 

 

Feito isso temos o ambiente pronto para usar o SQLite com o Visual Studio 2013.

 

Devemos referenciar o SQLite usando o Nuget somente no projeto no qual precisamos destes recursos.

 

No nosso exemplo eu vou criar um novo projeto chamado DAL (na segunda parte do artigo) e nele vou referenciar o SQLite usando o Nuget.

 

Criando um banco de dados e uma tabela no SQLite via código

 

Agora, a título de exercício, vamos criar um banco de dados e uma tabela no SQLite via código para verificar se o ambiente esta corretamente configurado.

 

Para isso vamos incluir um novo projeto Windows Forms em nossa solução clicando no menu FILE -> Add -> New Project;

 

A seguir informe o nome SQLite_CriandoDB_Tabela e clique no botão OK:

 

 

No formulário form1.vb deste projeto inclua os seguintes controles:

Disponha os controles no formulário conforme o leiaute da figura a seguir:

 

 

A próxima etapa é incluir uma referência ao SQLite neste projeto usando o Nuget como fizemos no primeiro projeto.

 

Nota: Se você não desejar criar outro projeto pode fazer o teste no mesmo projeto que criamos no início do artigo que já contém as referências ao SQLite ou ainda criar uma outra solução separada para fazer o teste.

 

Agora, antes de continuar, vamos definir o local onde iremos criar o banco de dados SQLite em nosso sistema.

 

Para este exemplo eu vou criar uma pasta no drive C: chamada c:\dados\SQLite onde irei criar o banco de dados chamado Macoratti.db.

 

O caminho tem que existir no seu sistema de arquivos caso contrário ocorrerá um erro.

 

Neste banco de dados eu vou criar uma tabela chamada Clientes com dois campos :

  1. ID do tipo INTEGER e chave primária

  2. NOME do tipo TEXT

No código iremos usar os namespaces do SQLite e das classes de acesso a dados Comuns e do namespace das classes de IO.

 

Assim teremos que declarar os seguintes namespaces no formulário do projeto:

Imports System.Data.SQLite
Imports System.Data.Common
Imports System.IO


Feito isso no evento Click do botão de comando vamos incluir o código abaixo:

 Private Sub btnCriarDB_Click(sender As Object, e As EventArgs) Handles btnCriarDB.Click
        'define o nome e local do arquivo SQLite
        Dim arquivoDB = "C:\dados\SQLite\Macoratti.db"
        'verifica se o arquivo ja existe e neste caso exclui o arquivo
        If File.Exists(arquivoDB) Then
            File.Delete(arquivoDB)
        End If
        'define a string de conexão com o arquivo
        Dim connString = String.Format("Data Source={0}; Pooling=false; FailIfMissing=false;", arquivoDB)
        Using factory = New SQLiteFactory()
            'cria uma conexão
            Using dbConn As DbConnection = factory.CreateConnection()
                'abre o arquivo
                dbConn.ConnectionString = connString
                dbConn.Open()
                Using cmd As DbCommand = dbConn.CreateCommand()
                    'cria tabela
                    cmd.CommandText = "CREATE TABLE IF NOT EXISTS CLIENTES (ID integer primary key, NOME text);"
                    cmd.ExecuteNonQuery()
                    'incluind dados na tabela
                    cmd.CommandText = "INSERT INTO CLIENTES (ID,NOME) VALUES(@id,@nome)"
                    'definindo o primeiro parâmetro e seu valor : ID
                    Dim p1 = cmd.CreateParameter()
                 p1.ParameterName = "@id"
                 p1.Value = 1
                    'definindo o segundo parâmetro e seu valor: NOME
                    Dim p2 = cmd.CreateParameter()
                 p2.ParameterName = "@nome"
                 p2.Value = "Macoratti"
                    'incluindo os parâmetros: ID e NOME
                    cmd.Parameters.Add(p1)
                    cmd.Parameters.Add(p2)
                    'executando o comando 
                    cmd.ExecuteNonQuery()
                    'lendo a tabela e exibindo os dados incluídos
                    cmd.CommandText = "SELECT ID, NOME FROM CLIENTES"

                    Using reader As DbDataReader = cmd.ExecuteReader()
                        While reader.Read()
                            Dim id As Long = reader.GetInt64(0)
                            Dim nome As String = reader.GetString(1)
                            lbDados.Items.Add(id & " " & nome)
                        End While
                    End Using
                    'libera os recursos
                    cmd.Dispose()
                End Using
                'fecha a conexão
                If dbConn.State <> ConnectionState.Closed Then
                    dbConn.Close()
                End If
                'libera os recursos
                dbConn.Dispose()
                factory.Dispose()
            End Using
        End Using
    End Sub

 

O código esta comentado e mostra a criação do banco de dados Macoratti.db na pasta c:\dados\SQLite e a tabela Clientes com os campos ID e NOME.

 

No código também estamos incluindo um valor igual a 1 para o campo ID e Macoratti para o campo NOME e a seguir acessamos a tabela e exibimos os valores no ListBox.

 

Executando o projeto e clicando no botão de comando iremos obter o seguinte resultado:

 

 

Examinando o sistema de arquivos verificamos que na pasta c:\dados\SQLite temos o arquivo Macoratti.db criado:

 

 

Dessa forma verificamos que nosso ambiente já esta funcionando e que já podemos criar, acessar e usar um banco de dados SQLite.

 

Na segunda parte do artigo eu vou mostrar como criar um banco de dados e tabela com a ferramenta administrativa SQLite Administrator.

Eu rogo por eles (os seus discípulos); não rogo pelo mundo, mas por aqueles que me deste, porque são teus. (oração de Jesus)
João 17:9

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