Quando em ambiente web, são várias as soluções para persistência de dados em bases de dados relacionais: desde os mais famosos MySQL, PostgreSQL, SQL Server até verdadeiros monstros poderosíssimos, como Oracle. Mas quando nos viramos para aplicações desktop, já não é bem assim.

Há várias soluções: o supra citado SQL Server, ficheiros MDB do Access… Mas todas têm certos requisitos no sistema onde correm; no mínimo dos mínimos, precisarão da biblioteca de acesso correspondente. Mesmo neste último caso, que já não é mau (SQL Server, por exemplo, requer mesmo a instalação do dito na máquina onde corre – uma versão lite, é certo, mas tem que se instalar), a biblioteca atinge, normalmente, vários  MB.

Entra o SQLite. O SQLite é uma implementação de base de dados relacional, transaccional, auto-suficiente – isto é, não depende de bibliotecas externas –, sem configuração de espécie nenhuma. O motor de base de dados implementa todas as manipulações CRUD (Criação, Leitura [Read], Actualização [Update] e Eliminação [Delete]) e garante que todas são 100% ACID (Atómicas, Consistentes, Isoladas e Duráveis). Sorry, não tenho mais acrónimos…

Quanto é que custa? Zero! Mais, todo o código é de domínio público, pelo que não há nenhum licenciamento nem restrições à redistribuição. E, para finalizar, tudo isto vem num pequeno pacote com cerca de 500 kB, podendo atingir tamanhos menores se se compilar sem características opcionais, ou com optimizações específicas para cada arquitectura.

Mas se as características da coisa não vos convencem, talvez vos convença a lista de rapaziada que trabalha com isto: Adobe (no AIR), Mozilla (no Firefox, no Thunderbird, em quase tudo), Symbian (ya, os dos sistemas operativos da Nokia), Apple (Apple Mail, Safari, Aperture, iPhone, IPod Touch, iTunes, provavelmente também no novíssimo iPad), Google (Google Gears, Android, Google Chrome), antivírus McAfee, Skype, Sun (Solaris)… Podia ficar aqui toda a noite, mas estes devem chegar.

OK, como é que podemos usar este fantástico, maravilhoso, bombástico e gratuíto motor de base de dados nas nossas aplicações .NET? Não podemos… Crap! Ou melhor, podíamos, acendendo à biblioteca em C com alguns truques do livro negro da programação (se algum dia eu aconselhar o uso de pinvoke’s, está na hora do internamento), ou então, escrevendo uma biblioteca .NET por cima daquilo…

… como fizeram estes tipos, que mereciam um beijinho nas nalgas, mas, devido à distância, levam só a bela da doação. Sério, vão doar. Eles merecem. Já está? Então prossigam com a instalação (não são tão práticos? até tem instalador e tudo…) e está automaticamente disponível no Visual Studio, tal e qual outra biblioteca normal da .NET. Depois de incluirem no vosso projecto, a forma de uso é muito, muito simples:

// o New=False é para o sistema não criar o ficheiro se não existir
SQLiteConnection conn = new SQLiteConnection(@"Data Source=ficheiro.db3;New=False;UTF8Encoding=True;Version=3");

conn.Open();

// abrir um novo comando
using (SQLiteCommand cmd = conn.CreateCommand())
{
    // o SQL aceite pelo SQLite é *quase* standard
    cmd.CommandText = @"SELECT * FROM uma_tabela
                        WHERE param_1 = @param_1
                        ORDER BY param_2";

    // queries parametrizadas - segurança acima de tudo
    cmd.Parameters.AddWithValue("@param_1", "valor");

    // abrir um novo leitor
    using (SQLiteDataReader da = cmd.ExecuteReader())
    {
        // iterar pelas filas devolvidas
        while (da.Read())
        {
            // fazer aqui alguma coisa com os valores
            String str = da.GetString(0);
            DateTime data = da.GetDateTime(1);
            Decimal dec = da.GetDecimal(2);
            // ...
        }
    }
}

// fechar a ligação
conn.Close();

Finalmente, e porque enquanto estamos a desenvolver não conseguimos aceder aos dados com muita confiança, é preciso uma ferramenta que nos permita criar, manter e alterar as nossas bases de dados. O instalador do SQLite, por acaso, até instala um plugin específico para o Visual Studio; sinceramente, prefiro não o usar – gosto de ter o espaço todo de um monitor para o código e usar uma ferramente externa para o que quer que seja que esteja a precisar no momento no outro monitor. Há várias ferramentas para gerir ficheiros do SQLite; eu, pessoalmente, uso a Sqliteman que, como não podia deixar de ser, é mais uma ferramente gratuíta e open-source.

Screenshot do Sqliteman 

Partilhar no Sapo Links Partilhar no del.icio.us Partilhar no Digg Partilhar no Twitter Partilhar no StumbleUpon Partilhar no MySpace Partilhar no Facebook

Comentários Deixar um comentário

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog