PontoXP.com - Dicas e Informações Gerais.





Conectando Programas DELPHI no Oracle9i – DBExpress

Autor: Oziel
Publicado em: Artigos

 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






PontoXP © 2006-2018 - Todos os direitos reservados.
Termos de uso | Contato | Anuncie| Assine os FEEDS RSS!