quarta-feira, 7 de setembro de 2011

Tutorial wxWidgets e sqlite3 parte 7 - Comunicando-se com um banco de dados


Hoje vamos iniciar a programação em si da comunicação entre sqlite3 e wxWidgets usando a biblioteca wxSqlite3.

Primeiro vamos inserir a biblioteca do wxSqlite3 que compilamos anteriormente, ao projeto:

Abra o projeto agenda criado anteriormente no Code::Blocks.
Abra o menu Project->Build options...
Vá na aba Linker settings.
Em link libraries clique no botão Add


Selecione a biblioteca do wxSqlite3 que deve estar em /usr/local/lib


Clique em Ok e salve o projeto.


Primeiro vamos criar duas funções bem básicas, uma será responsável por criar ou abrir um banco de dados em Sqlite3 e a outra será apenas para fechar a comunicação com o banco de dados.

Nos dois casos, a classe responsável por isso é a wxSQLite3Database, ela se encontra no arquivo de cabeçalho wxsqlite3.h, usaremos apenas duas de suas funções, Open() e Close().

Abra o projeto “agenda” criado no tutorial anterior e abra os arquivos sqlf.h e sqlf.cpp para edição.

No arquivo sqlf.h digite o seguinte:

sqlf.h
#ifndef SQLF_H_INCLUDED
#define SQLF_H_INCLUDED

#include <wx/wx.h>
#include <wx/wxsqlite3.h>

//Nesta primeira função, iremos abrir um banco de dados indicado pelo
//parâmetro caminho e retornar um ponteiro para wxSQLite3Database...
//Se o banco de dados não existir, será criado um...
wxSQLite3Database *OpenDB(wxString caminho);
//Aqui iremos apenas fechar o mesmo...
//Isto é necessário, pois liberaremos o arquivo para novos acessos...
void CloseDB(wxSQLite3Database* db);

#endif // SQLF_H_INCLUDED

No arquivo sqlf.cpp digite o seguinte:

sqlf.cpp
#include "sqlf.h"

//Vamos implementar nossa função OpenDB...
wxSQLite3Database *OpenDB(wxString caminho)
{
    //Aqui eu crio um ponteiro para um wxSQLite3Database chamado db...
    //É ele que nós retornaremos na função...
    wxSQLite3Database *db = new wxSQLite3Database();

    //Aqui uso a função Open, passando como parâmetro o caminho para o banco de dados...
    //O interessante aqui é vermos que se existir um banco de dados neste lugar a função
    //irá abrir o mesmo, se não existir o banco de dados será criado...
    db->Open(caminho);

    //Vocês poderão ter um problema ao executar esta função, dizendo que Open possui mais de
    //um parâmetro, se isto acontecer, basta usá-la desta maneira:

    //db->Open(caminho, wxEmptyString);

    //O segundo parametro seria a senha para o banco de dados,
    //se estivessemos usando criptografia no mesmo...

    //retornamos o db...
    return db;
}

//Aqui vamos fechar a "conexão" com o banco de dados...
void CloseDB(wxSQLite3Database* db)
{
    //Vemos se db é verdadeiro...
    assert(db != NULL);
    //Fechamos db com o comando Close();
    db->Close();

    //Deletamos db da memória...
    delete db;
}


Um exemplo de como utilizar as funções seria o seguinte, imagine que temos um arquivo em /home/usuario/banco.db e queremos abrí-lo:

//Vamos abrir o banco...
wxSQLite3Database *m_db = OpenDB(wxT(“/home/usuario/banco.db”));
//Aqui executo as operações desejadas, como inserir um dado ou fazer uma seleção...
//Aqui fechamos a conexão com o banco de dados...
CloseDB(m_db);

Bem fácil, não?

No próximo tutorial iremos criar o banco de dados da agenda pelo programa e faremos uma função para selecionarmos os dados do banco de dados.

Até a próxima.

2 comentários:

Anônimo disse...

onde estão os arquivos com essa biblioteca wxsqlite3? não encontrei a parte que vc explicou como compilar...

Alex disse...

Desculpe a demora na resposta, a compilação no Windows é simples, se você estiver usando o Visual C++ é só baixar o source nesse link http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/wxsqlite3-1.9.9.zip/download e depois abrir o projeto do visual c++ que está na pasta build, se estiver usando wxDev C++ ou code::blocks pode acompanhar a compilação nesse link, que está no outro blog http://wxnewbie.wordpress.com/2010/07/26/video-compilando-biblioteca-estatica-wxsqlite3/ qualquer coisa entre em contato, boa sorte.

Postar um comentário