A versão do banco de dados SQLite3 tem uma API de programação em C com mais de 70 funções. Esse post é o primeiro de uma série que tem como objetivo mostrar como programar utilizando SQLite3 e a linguagem C.
Abrindo o banco de dados
Antes de conseguirmos fazer consultas, inserções, atualizações e deleções temos que abrir o banco de dados.Podemos abrir o banco de dados com as funções sqlite3_open() ou sqlite3_open16():
int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); int sqlite3_open16( const void *filename, /* Database filename (UTF-16) */ sqlite3 **ppDb /* OUT: SQLite db handle */ );
Essas funções abrem o arquivo de banco de dado e retorna um objeto de conexão que pode ser utilizado por outras funções. Se o nome do arquivo (filename) é NULL ou ":memory:", o banco de dados será criado na memória RAM e só ira durar durante uma sessão. Já se o nome for uma string o banco de dados nesse arquivo será aberto. Caso nenhum arquivo com o nome especificado exista, um novo banco de dados será criado.
Mais informações sobre essas funções podem ser obtidas em http://sqlite.org/c3ref/open.html. Nos iremos mostrar o funcionamento com um exemplo.
int main(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Nao consigo abrir o banco de dados: %s\n",
sqlite3_errmsg(db));
exit(0);
}else{
fprintf(stderr, "Banco de dados aberto com sucesso\n");
}
...
Fechando um banco de dados
Uma conexão pode ser fechada utilizando a função sqlite3_close():
int sqlite3_close(sqlite3*);
Essa função fecha o banco de dados que já estava aberto. Todos as consultas preparadas devem ser finalizada antes do fechamento. Se alguma consulta permanecer não finalizada, sqlite3_close() irá retornar SQLITE_BUSY com a mensagem de erro apropriada.
Agora nosso exemplo fica mais completo.
#include <stdio.h>
#include <sqlite3.h>
int main(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n",
sqlite3_errmsg(db));
exit(0);
}else{
fprintf(stderr, "Opened database successfully\n");
}
sqlite3_close(db);
}