Laboratório de
Programação I
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Aplicação com
Bancos de dados
Parte II
Arquitetura de acesso
Para fins de flexibilidade podem ser implementados
diferentes formas de acesso através de componentes
variados
Porém sempre será baseado em uma arquitetura em
camadas visando facilitar o desenvolvimento de aplicações
A figura a seguir ilustra a forma como iremos acessar os
dados em nossas aplicações
Arquitetura de acesso
Aplicação
Data
Controls
Data Source
Componentes
visuais
Componentes
de
Data Set
acesso
BDE
Base de dados
Classes de componentes
Há duas grandes classes de componentes: os componentes
de acesso a dados (data-access) e os componentes de
controle, visualização e manipulação dos dados (datacontrols)
Os componentes de visualização e manipulação de dados
são também denominados de componentes data-aware
(componentes capazes de mostrar e atualizar os dados
armazenados em uma tabela associada)
Estes dois grupos de componentes estão localizados,
respectivamente, nas paletes Data Access e Data Controls
Conceito de Dataset
Para manipular um banco de dados é preciso compreender o
conceito de dataset
Um dataset é um objeto que consiste de uma série de
registros, cada um contendo qualquer quantidade de campos
e um ponteiro para o registro atual.
O dataset pode ter uma correspondência direta, um-para-um,
com uma tabela física, ou, como um resultado de uma query,
pode ser um subconjunto de uma tabela ou uma junção de
diversas tabelas
Tipo de objeto TDataSet
Um dataset é o tipo de objeto TDataSet e é uma classe
abstrata.
Uma classe abstrata é uma classe de onde você pode
derivar outras classes, mas não pode criar uma variável
desta classe. Por exemplo, ambos os componentes Query e
Table classificam-se como componentes TDataSet porque
cada um foi derivado do objeto TDataSet.
Note que você não encontrará nenhum componente
chamado TDataSet na Component Palette.
O TDataSet contém as abstrações necessárias para
manipular diretamente uma tabela.
É a ferramenta utilizada para abrir uma tabela e navegar por
suas colunas e linhas.
Componentes derivados de TDataSet
Os principais componentes do tipo data-access utilizados na
criação de aplicações com bancos de dados em C++ Builder
são os componentes derivados da classe abstrata
TDataSet, que são: Table da classe TTable, Query da classe
TQuery e StoredProc da classe TStoredProc.
Qualquer um dos componentes derivados da classe
TDataSet podem ser referenciados como datasets.
Os componentes Query e StoredProc são mais utilizados em
aplicações cliente-servidor
O componente Table oferece a forma mais simples de se
acessar informações em uma tabela de banco de dados
Estados de um dataset
Uma aplicação pode posicionar um dataset em determinado
estado através de uma chamada explícita a um método ou
através da ocorrência de um evento que desencadeie uma
troca de estado.
Há métodos que sempre levam para determinado estado e
são chamados métodos correspondentes aos estados. São
eles: Edit, Insert, Append e Setkey.
Um outro conjunto de métodos sempre retorna o dataset
para o seu estado de Browse como Delete, Cancel, GotoKey
e GotoNearest.
Há casos em que o sucesso ou insucesso do método define
se o dataset volta ao estado de Browse, como o método
Post.
Estados de um dataset
Estados de um dataset
Componentes Data Access
Os componentes Data Access estão na página Data Access
da Component Palette. Estes componentes permitem
construir aplicações de bancos de dados.
Eles, juntamente com os componentes Data Control, são
componentes data-aware.
Componentes data-aware são componentes que tem ciência de dados
e sua estrutura em um banco de dados.
Componentes Data Access
Quando você constrói uma aplicação de banco de dados,
você insere componentes Data Access em um form e atribui
propriedades que especificam o banco de dados, tabelas e
registros a serem utilizados com este form.
Muito embora componentes Data Access não sejam visíveis
durante a execução, eles trabalham em segundo plano para
regular o acesso aos dados
Componentes Data Access
Componentes Data Access
Componentes Data Control
Os componentes Data Control dão às suas aplicações de
banco de dados uma interface visual consistente, quer sua
aplicação acesse um arquivo de banco de dados local ou um
servidor remoto.
Baseado na instalação padrão, os componentes Data
Control estão localizados na página Data Controls da
Component Palette.
Componentes Data Control
Estes componentes fornecem um conjunto de componentes
data-aware de interface de usuário, que você pode utilizar
para criar aplicações baseadas em forms.
Como mencionado anteriormente, os componentes Data
Control e Data Access são data-aware.
Além da função de um componente Standard, componentes
Data Control também podem exibir dados de um campo de
uma tabela de um banco de dados ou enviar dados à uma
tabela de um form.
Componentes Data Control
Componentes Data Control
Componentes Data Control
Componentes Data Control
TTable
O componente Table é um componente DataSet, sendo
portanto, a interface entre o Borland Database Engine e os
componentes DataSource
Como dito anteriormente, o componente DataSource
oferece a interface para os componentes data-aware. que
irão compor a interface com o usuário.
Trabalhando-se com o componente Table usa-se a
propriedade DatabaseName para especificar o banco de
dados a ser acessado; a propriedade TableName serve para
indicar a tabela a acessar; utiliza-se a propriedade
IndexName para definir o uso de um determinado índice
com a tabela; configura-se a propriedade Active para True
ou chame-se o método Open para abrir o dataset, colocando
ele no estado Browse; coloca-se a propriedade Active em
False ou chame-se o método Close para fechar o dataset.
Data Source
O componente DataSource é a interface entre um
componente dataset e os componentes data-aware nos
formulários.
O DataSource liga-se a um dataset através da
propriedade Dataset.
Os componentes Data-aware, como DBEdit e DBGrid, ligamse ao DataSource através de suas propriedades
DataSource.
Usualmente há apenas um DataSource para cada dataset,
no entanto pode-se conectar a um dataset tantos
DataSource quantos forem necessários.
Para monitorar-se alterações no estado do dataset
associado ao DataSource pode-se associar um método ao
evento OnStateChange.
Data Source
Componentes DataSet gerenciam a comunicação com o
Borland Database Engine (BDE), e o componente
DataSource gerencia a comunicação com componentes
data-aware Data Control.
Em uma típica aplicação de banco de dados, um
componente DataSource é associado com um componente
DataSet (Table ou Query) e um ou mais componentes Data
Control (tais como DBGrid).
Data Source
Relacionamento entre os componentes
TDBGrid
É um componente Data Control
Apresentado na interface do usuário
Mostra os registros de uma tabela na forma de uma grade
Cada coluna é um campo e cada registro é uma linha
Deve ser ligado a um componente data source
TDBNavigator
O DBNavigator permite que o usuário realize operações
padrão de controle de dados.
Cada um dos botões do DBNavigator chama um método do
Componente Table ao qual está ligado
Deve ser ligado a um componente data source
Prática
Vamos implementar um programa que permite visualizar os estados do
dataset
- Adicionar a um formulário um TTable, um TDBGrid, um TDBNavigator,
um TLabel
Definir as seguintes propriedades:
-TTable:
DatabaseName: Agenda
TableName: Agenda.DB
Name: tbAgenda
Active: True
-DataSource
Dataset: tbAgenda
Name: dsAgenda
-TDBGrid
DataSource: dsAgenda
-TLabel
Name: lbEstado
Caption: deixe em branco
Alterar o evento OnStateChange do data source para:
switch (tbAgenda->State) {
case dsInactive:
lbEstado->Caption = "Estado Inativo";
break;
case dsBrowse:
lbEstado->Caption = "Estado de Browse";
break;
case dsEdit:
lbEstado->Caption = "Estado de Edição";
break;
case dsInsert:
lbEstado->Caption = "Estado de Inserção";
break;
case dsSetKey:
lbEstado->Caption = "Estado de Busca (SetKey)";
break;
case dsCalcFields:
lbEstado->Caption = "Estado de Campo Calculado";
break;
}
Download

componentes data