Usando Sqlite Com C#

30/01/2008 (Quarta-feira)

    Vamos ver uma forma muito fácil de usar o SQlite com C#, desde a obtenção do driver até a construção de uma pequena aplicação de exemplo.

             Apresentando o SQlite.
    Para quem não conhece, o SQlite é uma biblioteca, escrita em C, que implementa um banco de dados relacional auto-contido – e Open Source! Com SQlite não há necessidade de configurações, servidor, etc – basta distribuir a DLL e apontar para a base! Você pode saber mais sobre o SQlite no site oficial: http://www.sqlite.org/.

    Apesar de escrito em C, é usado em com muitas outras linguagens, como C++, Java, Delphi, etc. Nós vamos utilizar um driver (também Open-Source!) para Ado.Net. Baixe o driver do site http://sqlite.phxsoftware.com/.
    Para usar o driver, existem duas opções: adicionar a DLL ao GAC (Global Assembly Cache), usando o GacUtils, ou copiar a DLL para a mesma pasta do executável. Note que nossa única dependência é o arquivo System.Data.SQLite.DLL, não precisamos nem mesmo da DLL original em C (“Sqlite3.dll”).
 
             Botando a mão na massa!
    Caso ainda não tenha baixado e instalado o driver, baixe e instale-o agora. Abra a sua IDE e crie uma nova solução WinForms; vamos chamá-la de SqliteNet. Adicione, às referências do projeto, a DLL (System.Data.SQLite.DLL).
 
    Certifique-se de estar visualizando o formulário (não o código) e adicione os seguintes componentes:
SQLiteCommand
SQLiteCommandBuilder
SQLiteDataAdapter
SQLiteConnection
DataSet
DataGrid

  Configure os componentes adicionados conforme abaixo (altere apenas as propriedades indicadas):
SQLiteConnection
  Name: connection
  ConnectionString: Data Source=Teste.db3

SQLiteCommand
  Name: command
  CommandText: SELECT * from Contatos
  Connection: connection

SQLiteDataAdapter
  Name: adapter
  SelectCommand: command
 
DataSet
  Name: dataset
  DataSetName: Contatos

SQLiteCommandBuilder
  Name: commandBuilder
  DataAdapter: adapter
 
DataGrid
  Name: grid
  DataSource: dataset
  DataMember: Contatos
  Dock: Fill
 

  Visualize o código do formulário. Certifique-se de que todas as diretivas abaixo estejam no início do código:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;

No evento Load do form, digite:

  if (!File.Exists("Teste.db3"))
    CriaDb();
  LeDados();

No evento FormClosing, digite:

  adapter.Update(dataset, "Contatos");
 

Digite as duas rotinas abaixo:

  void CriaDb()
  {
    SQLiteConnection.CreateFile("Teste.db3");
   
    connection.Open();
    string s = command.CommandText;
    command.CommandText = "CREATE TABLE Contatos ([ID] INTEGER PRIMARY KEY, [Nome] NVARCHAR(40), [Email] NVARCHAR(50))";
    command.ExecuteNonQuery();
    command.CommandText = "INSERT INTO Contatos (Nome,Email) VALUES ('Teste',  '')";
    command.ExecuteNonQuery();
    connection.Close();
    command.CommandText = s;
  }
 
  void LeDados()
  {
    connection.Open();
    adapter.Fill(dataset, "Contatos");
    adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
    adapter.InsertCommand = commandBuilder.GetInsertCommand();
    adapter.DeleteCommand = commandBuilder.GetDeleteCommand();
    connection.Close();
  } 

  Execute a aplicação. Você deve ver uma tela como a abaixo:
Sqlite.Net  Pronto! Temos um aplicativo simples e funcional, onde podemos inserir registros, alterá-los, etc, utilizando o SQlite. 

- Links:
  SQlite: http://www.sqlite.org/
  System.Data.SQLite: http://sqlite.phxsoftware.com/
 
Você sabia que…
Uma pessoa passa em média 20 anos de sua vida dormindo?