As funcionalidades de banco de dados na plataforma GNU são implementadas através de um projeto chamado GDA, de Gnome Data Access.
GDA é independente de SGBD, ou seja, permite operar com servidores diferentes através de uma mesma API, permitindo trocar o servidor de banco de dados sem alterar o aplicativo. Para permitir isso, GDA provê um elevado nível de abstração dos tipos de dados operados por cada tipo de SGBD em particular.
Como outras ferramentas para acesso a SGBDs, GDA oferece os seguintes componentes básicos:
1) um componente para conexão com o banco de dados
2) um componente facilitador para a criação de querys;
3) Modelos de dados que guardam o resultado das consultas
4) Componentes para exibição dos dados contidos nos modelos de dados na forma de tabelas e listas.
Uma consulta é feita usando o componente de conexão (1) e opcionalmente o componente facilitador para construção de querys (2), que retorna os dados em um modelo de dados (3), que é então associado aos componentes de exibição, chamados visões (4). Esse procedimento é bastante similar em diversas ferramentas de programação, que normalmente implementam variações em torno desse modelo básico.
Para a versão de GDA utilizada nesse exemplo, a versão 3, apenas o componente de conexão e os modelos de dados estão na biblioteca GDA, enquanto que os objetos gráficos estão em um projeto chamado libgnomedb.
Vamos ver como inicializar libgnomedb++, a ligação em C++ para a biblioteca libgnomedb, e criar uma conexão com o SGBD:
Inicializamos a biblioteca, na linha 5, para em seguida criarmos um objeto Client, na linha 7, que entre outras coisas, manipula um conjunto de conexões. É através desses objetos que mantemos uma ou, segundo os manuais, varias conexões simultâneas com SGBDs.
Utilizamos apenas uma conexão, com servidor SQLite, como pode ser observado pelos parâmetros da conexão, nas linhas 10 e 11, que incluem também o nome de usuário(login) e a senha para conexão com o servidor de banco de dados.
Se temos um objeto de conexão, temos também acesso aos dados, já que é através do objeto de conexão que são feitas consultas e operações no banco.
No próximo exemplo vamos realizar uma consulta e então associar os dados retornados a dois dos componentes gráficos de interface (visões) disponíveis, um form e um grid.
Até a linha 11 são realizados os procedimentos que já conhecemos, realmente nos interessam as linhas 13, 14 e 16.
Na linha 13 é criado um modelo de dados, que guarda os dados da consulta ao servidor de banco de dados.
Na linha 14, usando o objeto de conexão, executamos a instrução "SELECT * FROM titulos" no servidor de banco de dados, armazenando o resultado da consulta no modelo de dados "model" que havíamos criado na linha 13.
Para a visualização dos resultados das consultas ao banco, a maioria das ferramentas de programação oferece componentes para exibição dos resultados no formato de tabelas, que podem receber nomes como datagrid, dbgrid, dbview etc. Na plataforma GNU nós os chamamos simplesmente de grids: criamos um deles na linha 16.
Além dos bem conhecidos grids, GDA conta também com um componente para visualização de dados na forma de formulário, chamado form, que criamos na linha 17.
Os forms representam uma ferramenta eficiente para acelerar o desenvolvimento de aplicativos de acesso a banco de dados. Eles têm a seguinte aparência:
Enquanto que os grids são assim:
Como você deve ter percebido pelos ícones na parte inferior, em GNOME-DB os grids e os forms podem ser usados para realizar inclusão, alteração e deleção de registros. Para isso basta programar as querys correspondentes, o que é muito simples, mas não será demonstrado aqui.