Professional Documents
Culture Documents
UNIVERSO
Universidade Salgado de Oliveira
Delphi 7
Com Banco de Dados
utilizando conexo ADO
Junho/2009
Atualizado em out/2010
Pgina 1 de 1
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
INDCE
1. Introduo........................................................................................................... 3
1.1. Trabalhando com Banco de Dados no Delphi .................................................... 3
1.2. Tecnologia ADO ................................................................................................ 3
3. Arquitetura de Acesso.......................................................................................... 6
3.1. Entendendo como acessamos os dados no Delphi ............................................ 6
Pgina 2 de 2
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
1. Introduo
BDE ADO
Pgina 3 de 3
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
Este exemplo demonstra o uso mais simples dos objetos ADO. Aqui, um objeto DBGrid
ser preenchido com o contedo de uma tabela, fornecido atravs de um objeto TADOTable:
Neste caso, selecione Use Connection String e clique no boto Build. A janela Data Link
Properties ser exibida:
Cada Item exibido nesta janela representa um mecanismo de conexo aos dados.
Lembrando, o ADO no acesso o banco de dados sozinho, ele se conecta a um motor de
acesso para realizar a conexo. Este motor pode ser uma conexo ODBC, uma conexo OLEDB
nativa, uma conexo JET Engine, ou algum outro tipo de motor instalado. No nosso caso,
usaremos o motor Jet Engine, para acessar o banco de dados Access.
Pgina 4 de 4
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
Ok! Basta alterar a propriedade Active do objeto AdoTable1 para TRUE, e seu formulrio
ser parecido com a figura abaixo:
Pgina 5 de 5
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
3. Arquitetura de Acesso
Para que os mesmos possam ser modificados e visualizados pelo usurio, devemos
utilizar os componentes da guia Data Controls. Nesta guia encontramos componentes
semelhantes aos da guia Standard, porm criados especificamente para dar acesso aos dados
(DBGrid, DBEdit, DBMemo, DBImage, etc.).
Pgina 6 de 6
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
simples, flexibilidade. Cada uma das guias de acesso possui mais de um tipo de componente
para acesso a dados, alguns que exploram melhor a capacidade de acesso a tabelas
desktop (como o caso do componente ADOTable do ADO) e outros voltados
especificamente para o acesso cliente-servidor (como o componente ADOQuery da
mesma guia). Separando-se os controles de edio (Data Controls) dos componentes
de acesso a dados (BDE, dbGO, IBX ou dbExpress) temos um meio mais fcil de
substituir a metodologia de acesso sem contudo afetar a interface visual j construda
anteriormente.
Como os componentes de acesso so diferentes (embora possuam propriedades e
mtodos comuns) para que no fossem necessrios Data Controls especficos para cada um, a
Borland criou um outro componente, que responsvel por fazer a ligao entre os
componentes de exibio e os componentes de acesso. Estamos falando do componente
DataSource, que se encontra na guia Data Access. Este componente se liga aos componentes
de acesso a dados atravs da propriedade DataSet. E os Data Controls se conectam a ele
atravs de uma propriedade tambm chamada DataSource. Assim, se desejarmos trocar os
componentes de acesso, simplesmente os inserimos no Form (ou DataModule) e apontamos os
DataSources para os novos componentes de acesso, sem precisar modificar nada nos Data
Controls.
Pgina 7 de 7
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
Nas prximas pginas vamos apresentar uma descrio mais detalhada de todas as propriedade,
mtodos e eventos relevantes aos objeto da palheta ADO.
4.1. TADOConnection
Este componente utilizado para criar uma nova conexo com a camada ADO. bastante
semelhante ao componente TDatabase, sua utilizao tambm opcional.
Principais Propriedades
CommandTimeout Esta propriedade permite especificar um determinado tempo de limite para obter
uma resposta de um comando executado.
Connected Especifica se existe ou no uma conexo.
ConnectString Define a String de conexo entre a camada intercessora do banco de dados com
o ADO. Utilizamos esta propriedade para definir qual ser o banco de dados e a
camada para o ADO(Jet, ODBC, OLE DB).
ConnectionTimeout Esta propriedade permite especificar um determinado tempo de limite para ser
feita a conexo com o banco de dados.
ConnectOption Esta propriedade define o tipo de conexo.
CoConnectUnspecified Este e o modo padrao do ADO.
CoAsyncConnect Este modo e utilizado Quando o servidor for muito
lento.
CursorLocation Define onde estar o cursor para suas tabelas.
DefaultDatabase Define um banco de dados padro para a conexo quando uma conexo via
ConnectionString no for bem sucedida.
IsolationLevel Define o nvel de isolamento entre do banco de dados. Esta propriedade
semelhante propriedade TransIsolation do objeto Database.
Mode Define um modo de conexo: Somente leitura, leitura e gravao e etc.
Provider Especifica o mtodo de conexo que ser utilizado pela camada ADO: Jet,
OLEDB, ODBC, etc.
Principais Eventos
AfterConnect Ocorre aps efetuar uma conexo.
AfterDisconnect Ocorre aps desconectar.
BeforeConnect Ocorre antes de efetuar uma conexo.
BeforeDisconnect Ocorre andes de desconectar.
OnBeginTrasComplete Ocorre quando iniciada uma nova transao.
OnCommitComplete Ocorre quando o comando Commit foi executado.
OnConnectCompleted Ocorre quando feita uma conexo.
OnDisconnect Ocorre quando terminada uma conexo.
OnExecuteComplete Ocorre quando uma conexo com o ADO executou um comando.
OnInfoMessage Ocorre quando uma conexo bem sucedida e informaes adicionais so
enviadas pelo Provider.
OnLogin Ocorre quando aberta a janela LoginPrompt.
OnRollbackTransComplete Ocorre quando executado um RollBack.
OnWillConnect Ocorre quando uma conexo est prestes a ser efetuada.
OnWillExecute Ocorre quando uma execuo est prestes a ser efetuada.
Principais mtodos
Open Permite ativar uma conexo
Close Termina uma conexo
Pgina 8 de 8
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
4.2. TADOTable
Objeto ADOTable de uma conexo ADO equivalente ao objeto TTable da camada BDE.
Principais Propriedades
Active Determina se o DataSet esta ativo (aberto). Colocar essa propriedade com valor
True o mesmo que executar o mtodo Open do DataSet, assim como colocar
o valor False o mesmo que executar o mtodo Close.
CacheSize Indica quantos registros sero pedidos para o servidor por vez, e armazenados na
memoria local. Novos pedidos so automaticamente controlados pelo objeto.
Connection Objeto TADOConnection, que representa a instancia do banco de dados atual.
ConnectionString Pode ser usado no lugar de um objeto TADOConnection. Permite configurar uma
string de conexo com o servidor.
CursorLocation Indica se o objeto ira trabalhar em modo ChachedUpdates. Caso esta propriedade
esteja configurada para clUseClient, os dados serao armazenados no cliente, e
todas as operacoes realizadas (como insert, update e delete) permanecerao no
mesmo. Caso a propriedade seja clUseServer, as alteracoes serao
automaticamente enviadas para o servidor.
CursorType Indica o tipo de cursor utilizado pelo cliente. Os possiveis valores so:
ctUnspecified Um tipo de cursor no pre-definido pelo objeto.
ctOpenForwardOnly Cursor uni-direcional. Com este valor, o usuario podera
apenas navegar para frente, nunca retornar os registros.
ctKeyset Cursor bi-direcional, no concorrente. Aqui, o usuario pode
navegar para frente e para tras no result set. As alteracoes feitas por transacoes
concorrentes no estarao acessiveis, e os registros deletados, apesar de visiveis,
no estarao disponiveis.
ctDynamic Bi-direcional e concorrente. Este tipo de cursor e o que
apresenta a pior performance e o que gasta mais recursos do sistema. Aqui, o
usuario visualiza as alteracoes, insercoes e delecoes de outras transacoes.
ctStatic Uma simples copia dos registros. Qualquer tipo de alteracao
concorrente no sera visualizada neste cursor.
LockType Especifica como o lock de registros sera executado. Os possiveis valores so:
ItUnspecified Um tipo de lock que no foi pre-definido pelo objeto;
itReadOnly Somente leitura;
itPessimistic Impede que outras sessoes alterem o registro que estiver
locado pelo usuario;
itOptimistic Todos podem alterar o mesmo registro;
itBatchOptimistic Impede que outras sessoes alterem quando estiver em
modo update Batch.
MarshalOptions til apenas quando a tabela est em Client-Side. Indica quais registros sero
devolvidos para o servidor ou para a camada middleware. Se o valor for
moMarshalAll, todos os registros sero enviados para o servidor. Caso o valor
seja moMarshalModifiedOnly, apenas os registros modificados sero devolvidos.
MaxRecords Indica a quantidade mxima de registros exibidos pelo objeto. 0 (zero) indica
todos os registros.
TableDirect Quando False, os dados sero sempre requisitados via intrues SQL Select.
Neste caso, a instruo criada automaticamente pelo objeto. O valor Default e
False.
TableName Nome da tabela dentro do banco de dados.
Principais Eventos
OnEndOfRecordset Ocorre quando o ponteiro avana aps o ltimo registro carregado pelo
RecordSet. importante notar que esta ao no representa o final da
tabela, e sim, o final do buffer.
O parmetro MoreData, quando True, ir indicar a requisio dos
prximos registros que no foram carregados para o buffer.
Pgina 9 de 9
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
Principais Mtodos
function Seek(const KeyValues: Variant; SeekOption: TSeekOption = soFirstEQ): Boolean;
Faz a pesquisa utilizando o ndice atual. O primeiro parmetro um array OLE (VarArrayOf) de valores de
pesquisa. O segundo indica como a pesquisa ser realizada. Os possveis valores para SeekOption so:
4.3. TADOQuery
Representa o objeto TQuery da palheta DataAccess. O mais indicado para conexes com um
banco de dados Cliente-Servidor.
Principais Propriedades
Active Determina se o DataSet esta ativo (aberto). Colocar essa propriedade com valor
True o mesmo que executar o mtodo Open do DataSet, assim como colocar o
valor False o mesmo que executar o mtodo Close.
Connection Objeto TADOConnection que representa a instncia do banco de dados atual.
CursorLocation Indica se o objeto ira trabalhar em modo ChachedUpdates. Caso esta propriedade
esteja configurada para clUseClient, os dados serao armazenados no cliente, e todas
as operacoes realizadas (como insert, update e delete) permanecerao no mesmo.
Caso a propriedade seja clUseServer, as alteracoes serao automaticamente enviadas
para o servidor.
CursorType Indica o tipo de cursor utilizado pelo cliente. Os possiveis valores so:
Pgina 10 de 10
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
LockType Especifica como o lock de registros sera executado. Os possiveis valores so:
ADOQuery1.Parameters.Params.ParamByname(codigo_cliente).Value:=1;
SQL Instruo SQL que ser executada pelo objeto.
Principais Eventos:
OnEndOfRecordset Ocorre quando o ponteiro avana aps o ltimo registro carregado pelo
RecordSet. importante notar que esta ao no representa o final da
tabela, e sim, o final do buffer.
O parmetro MoreData, quando True, ir indicar a requisio dos
prximos registros que no foram carregados para o buffer.
O parmetro EventStatus indica se a operacao que gerou o evento foi ou
no bem sucedida.
OnFetchComplete Ocorre quando uma requisio de dados para o buffer terminada.
OnFetchProgress Ocorre durante a leitura dos dados para o buffer. O parmetro Progress
indica a quantidade de registros lidos, MaxProgress a quantidade a ser
lida e EventStatus se a operao foi bem sucedida.
OnfieldChangeComplete Ocorre aps a gravao de um valor para algum campo da tabela.
OnMoveComplete Ocorre aps o ponteiro de registro realizar alguma movimentao.
OnRecordChangeComplete Ocorre aps um ou vrios registros serem atualizados.
OnWillChangefield Ocorre antes da edio do valor de um campo.
OnWillChangeRecord Ocorre antes da edio/insero de um registro.
OnWillChangeRecordset Ocorre antes da alterao de algum valor da tabela.
OnWillMove Ocorre antes da movimentao do ponteiro para algum lugar.
Principais Metodos:
Open Abre a query
Close Fecha a Query
ExecSQL Executa uma intruo SQL
4.4. TADODataSet
Este objeto a classe pai dos objetos TADOTable, TADOQuery e TADOStoredProc. Suas
propriedades, mtodos e eventos so os mesmo destes objetos.
Pgina 11 de 11
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
4.5. TADOCommand
No possui equivalente na palheta DataAccess. Este componente representa o objeto ADO
Command, da biblioteca ADO. Serve apenas para enviar instrues SQL para o servidor, e no permite a
ligao com objetos DataControl. Possui uma performance otimizada para instrues que no necessitem
retornar dados para a aplicao. Operaes como backup, deleo de tabelas e update batchs so mais
rpidos quando executados atravs deste componente. Aplicaes SQL tambm podem ter um
desempenho melhorado com este componente.
Principais Propriedades
CommandText Instruo SQL que ser executada pelo servidor.
CommandTimeOut Tempo que o objeto ir esperar pela resposta do servidor.
CommandType Indica o tipo de instruo contida na propriedade CommandText.
Connection Objeto TADOConnection, que representa a instncia do banco de dados atual.
ParamCheck Se True, o objeto ir considerar as expressoes :variavel como um nome de
parmetro.
Parameters Propriedade da classe TParameters, que serve para a passagem de valores para
os parmetros da SQL. A sintaxe diferente da propriedade Params do objeto
TQuery. Ex:
ADOCommand1.Parameters.Params.ParamByname(codigo_cliente).Value:=1;
Este objeto no possui eventos. Para tratar os possveis resultados que este objeto pode gerar,
utilize os eventos do objeto TADOConnection.
Principais Mtodos:
Execute Envia a intrucao SQL para o servidor
4.6. TADOStoredProc
Equivalente ao objeto TStoredProc, da palheta DataAccess. Permite acionar uma procedure
armazenada no servidor de banco de dados.
Principais Propriedades:
Connection Objeto TADOConnection que representa a instncia atual do banco de
dados.
Parameters Define os parmetros que sero passados ou recebidos da Stored
Procedure.
ProcedureName Nome da StoredProcedure.
Pgina 12 de 12
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
5.1. DBNavigator
Eventos Descrio
BeforeAction Quando um boto do Navigator pressionado, antes da ao ser
executada
OnClick Quando um boto do Navigator pressionado, depois da ao ser
executada
5.2. TDBGrid
Mostra os registros de uma tabela em forma de grade, cada coluna um campo e cada
registro, uma linha.
Propriedades Descrio
Columns Lista do tipo TDBGridColumns, com as colunas da Grid, cada item da lista
do tipo TColumn
Fields Lista de objetos TField mostrados nas colunas
Options Set com as opes da Grid, como ConfirmDelete, MultiSelect,
ColumnResize
SelectedField Campo da coluna selecionada
SelectedIndex ndice da coluna selecionada
Pgina 13 de 13
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
Propriedades Descrio
SelectedRows Lista do tipo TBookmarkList, com os registros selecionados em uma Grid
com MultiSelect
TitleFont Fonte do ttulo das colunas
FixedColor Cor Fixa, usada nas colunas e indicadores
Eventos Descrio
OnCellClick Ao clicar em uma clula da Grid
OnColEnter Quando uma clula de alguma coluna da Grid recebe o foco
OnColExit Quando uma clula de alguma coluna da Grid perde o foco
OnColumnMoved Quando o usurio mover uma coluna
OnDrawDataCell Evento usado para personalizar a forma de desenhar os dados que so
apresentados na Grid
OnEditButtonClick Ao clicar no boto de edio de uma clula, mostrado pela propriedade
ButtonStyle da coluna
OnTitleClick Ao clicar no ttulo das colunas
5.2.1. TColumn
5.4. TDBCheckBox
Usado em campos que podem receber apenas dois valores, como campos lgicos.
Propriedades Descrio
ValueChecked Valor a ser armazenado quando est selecionado
ValueUnchecked Valor a ser armazenado quando no est selecionado
Pgina 14 de 14
Delphi 7 Banco de Dados com ADO
UNIVERSO Universidade Salgado de Oliveira
Prof.Guilherme Arantes - cgarantes@yahoo.com.br - www.Guilherme.inf.br
5.5. TDBRadioGroup
Preenche um campo com dados contidos em outra tabela. Se o campo mostrado nesses
componentes for um campo Lookup, voc no precisa especificar nenhuma das propriedades
abaixo, apenas DataSource e DataField.
Propriedades Descrio
ListSource DataSource que contm os valores a serem exibidos na lista
ListField Campo de ListSource que ser exibido
KeyField Campo de ListSource usado no relacionamento
Pgina 15 de 15