Olá pessoal, vamos falar um pouco sobre Delphi e sua integração com banco de dados Oracle 9i. Estaremos neste artigo elaborando um pequeno cadastro de clientes onde poderemos realizar algumas operações básicas, tais como : inserir, alterar e excluir registros de uma tabela.
Farei primeiramente as ligações com o Oracle, utilizando os componentes da paleta DBExpress do Delphi.
Para este exemple utilize da :
Paleta DBExpress:
* SQLConnection
* SQLQuery
Paleta DataControls:
* DBGrid
Paleta DataAcess
* DataSetProvider
* ClientDataSet
* DataSource
Ligações dos Componentes do Banco:
1 – Dê um duplo clique no componente SQLConnection:
2- Defina uma nova conexão, também a Base de Dados, Usuário e Senha, previamente configurados na instalação do Client do Oracle e também LoginPrompt com False ( sempre passando os parâmetros em Params ).
3 – No componente SQLQuery defina a propriedade SQLConnection com o nome que foi dado ao componente SQLConnection.
4 – Na propriedade SQL(Strings) do componente SQLQuery defina o SQL de consulta.
Ex: select Clientes.Código, Clientes.Nome, Clientes.Cidade from Clientes;
5 – Ligue agora a propriedade DataSet do componente DataSetProvider ao SQLQuery.
6 – Ligue a propriedade ProviderName do componente ClientDataSet ao DataSetProvider.
7 – Ligue a propriedade DataSet do componente DataSource ao ClientDataSet.
8 – Ligue a propriedade DataSource do DBGrid ao DataSource
E finalmente para visualizar os dados no DBGrid ative o componente ClientDataSet (Active = True ).
Sempre lembrando que para a conexão com DBExpress o componente SQLQuery é somente o que contém a string de consulta e o componente ClientDataSet será o responsável para carregá-la.
Passamos agora a manipulação desses dados que foram visualizados no grid.
Para isso utilizarei o componente SQLStoredProc da paleta DBExpress.
Antes porém de utilizá-lo no Delphi, precisaremos criar os procedimentos no banco.
Então mãos a obra !!
Utilize algum utilitário para o Oracle de sua preferência, o nativo do Oracle é o SQL*Plus.
Criando o procedimento de Inclusão, Alteração e Exclusão.
CREATE OR REPLACE PROCEDURE IAE_CLIENTES(
–Passagem dos Parâmetros
Tipo Char,
PAR_CODIGO CLIENTES.CODIGO%TYPE,
PAR_NOME CLIENTES.NOME%TYPE,
PAR_CIDADE CLIENTES.CIDADE%TYPE ) AS
–Começo do corpo do Procedimento
Begin
–Condição para Inclusão
if Tipo = 'I' then
insert into CLIENTES( CODIGO, NOME, CIDADE )
values (PAR_CODIGO, PAR_NOME, PAR_CIDADE);
commit work;
–Condição para Alteração
elsif Tipo = 'A' then
update CLIENTES set NOME = PAR_NOME, CIDADE = PAR_CIDADE
where CODIGO = PAR_CODIGO;
commit work;
–Condição para Exclusão
elsif Tipo = 'E' then
delete from CLIENTES where CLIENTES.CODIGO= PAR_CODIGO;
commit work;
end if;
end IAE_CLIENTES; — Fim do corpo do Procedimento
/
OBS.: %TYPE IDENTIFICA QUAL TIPO DE PARAMETRO VOCÊ ESTÁ USANDO NO DELPHI.
De volta ao Delphi após criado este procedimento no banco.
Instancie agora neste formulário os seguintes objetos:
Paleta Standart
* 1 Panel
* 3 Edit
* 3 Label
Paleta Aditional
* 3 BitBtn
Paleta DBExpress
* SQLStoredProc
Botão Incluir :
1 – Passe os Parâmetros :
SQLStoredProc1.ParamByName(‘Par_Codigo’).Value:= Edit1.Text; //Código
SQLStoredProc1.ParamByName(‘Par_Nome’).Value:= Edit2.Text; //Nome
SQLStoredProc1.ParamByName(‘Par_Cidade’).Value:= Edit3.Text; //Cidade
SQLStoredProc1.ParamByName(‘Tipo’).Value:= ‘I’; //Tipo ( inclusão )
SQLStoredProc1.ExecProc;
2 – Dê um Close e um Open no ClientDataSet para atualizar os dados e visualize-os no Grid.
Para os procedimentos de Alteração e Exclusão repita a mesma operação com o SQLStoredProc somente ao invés de passar o parâmetro “I” passe o “A” para alteração e “E” para exclusão.
Neste exemplo utilizamos Edit, então para a visualização precisaremos atribuir os valores do banco nos respectivos campos.
Se houver necessidade, você poderá utilizar o componente SQLDataSet para ser usado em uma seqüência criada no banco.
Proceda então da seguinte forma:
1- Crie a Sequence no banco :
CREATE SEQUENCE CLIENTES_CODIGO INCREMENT BY 1 NOCACHE START WITH 0 MINVALUE 0;
COMMIT WORK;
2- Instancie o componente SQLDataSet no formulário e na propriedade commandtext do memo insira:
SELECT CLIENTES_CODIGO.NEXTVAL FROM DUAL;
3- No SQLDataSet ainda determine o SQLConnection setado para o SQLConnection que usamos no início.
Para se obter o valor desta seqüência, é só usa-lo da seguinte forma:
SQLDataSet.Open; //obtendo mais um número sequêncial
SQLStoredProc1.ParamByName(‘Par_Codigo’).Value:= SQLDataSetNextval.AsInteger; //passando este número ao campo código
SQLDataSet.Close;//fechando o componente
Toda vez que o componente SQLDataSet é aberto ele dispara a rotina para geração de um novo número, portanto se você usar este componente para a geração de números seqüenciais no Oracle, não precisará se preocupar como controlá-lo.
Oziel R. Meurer