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); }