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:
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?
Escrito por Rafael Rodrigues