Banco de Dados Embarcado com SQLite
De Wiki do Veiga
Tabela de conteúdo |
Introdução
SQLite é um bando de dados embarcado que funciona na forma de uma biblioteca. Com SQLite é possível manter um banco de dados SQL completo com múltiplas tabelas, índices, triggers e views em um único arquivo. Além disso SQLite pode ser cross-compilado e o tamanho da biblioteca pode ser tão pequeno quanto 300KB. Por esses motivos, SQLite é uma opção popular de banco de dados para sistemas embarcados com limitação de recursos.
Este texto contém um pequeno tutorial de como instalar e utilizar SQLite, inclusive com um exemplo em linguagem C.
Instalação
Instalação do SQLite:
apt-get install sqlite3 sqlite3-doc libsqlite3-dev
Instalação do SQLite Browser, um a interface gráfica para manipular base de dados do SQLite:
apt-get install sqlitebrowser
Exemplo de Utilização
Linha de Comando
Criando uma base de dados via linha de comando.
$ sqlite3 test.db SQLite version 3.6.10 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> CREATE TABLE pessoa ( ...> id INTEGER PRIMARY KEY, ...> nome VARCHAR(30), ...> idade NUMERIC); sqlite> INSERT INTO pessoa VALUES(0,'marcelo',26); sqlite> INSERT INTO pessoa VALUES(1,'pedro',30); sqlite> .explain ON sqlite> SELECT * FROM pessoa; id nome idad ---- ------------- ---- 0 marcelo 26 1 pedro 30 sqlite> UPDATE pessoa SET idade = 20 WHERE id = 1; sqlite> SELECT * FROM pessoa; id nome idad ---- ------------- ---- 0 marcelo 26 1 pedro 20 .exit
Também é possível executar um dump e visualizar o SQL utilizado para montar o banco de dados.
$ sqlite3 test.db SQLite version 3.6.10 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .dump BEGIN TRANSACTION; CREATE TABLE pessoa ( id INTEGER PRIMARY KEY, nome VARCHAR(30), idade NUMERIC); INSERT INTO "pessoa" VALUES(0,'marcelo',26); INSERT INTO "pessoa" VALUES(1,'pedro',20); INSERT INTO "pessoa" VALUES(2,'pedro',30); COMMIT; sqlite>.exit
SQLite Browser
Acessando com o browser:
sqlitebrowser teste.db
Programa em C
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for (i = 0; i < argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n",
sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
Compilando:
gcc -o exe sqlite.c -lsqlite3 -Wall
Testando com o arquivo teste.db criado anteriormente:
./exe teste.db "select * from pessoa" id = 0 nome = marcelo idade = 26 id = 1 nome = pedro idade = 20
Referências
- SQLite Home Page: http://www.sqlite.org/
- sqlite3: A command-line access program for SQLite databases: http://www.sqlite.org/sqlite.html
- SQLite In 5 Minutes Or Less: http://www.sqlite.org/quickstart.html
- An Introduction To The SQLite C/C++ Interface: http://www.sqlite.org/cintro.html
- SQLite Database Browser: http://sqlitebrowser.sourceforge.net/
Marcelo Veiga Neves < marcelo.veiga at gmail.com >
