quinta-feira, 5 de novembro de 2009

Conexão com SGDBS Utilizando DBExpress – Parte 1

Olá delphianos, nesse artigo irei apresentar de como Conectar os Principais SGDBS do Mercado através do Delphi 2009 e DBExpress 5.
Neste artigo Utilizaremos as Ferramentas Delphi 2009 com DBExpress 5 os drivers TBODBXFB 0.9 para Firebird e os drivers Nativos do Delphi para os demais SGDBS.
Nas edições 53 e 60 da revista Active Delphi foram apresentados alguns artigos de conexão utilizando o driver TBODBXFB e como realizar a sua Instalação. Para Baixar o Instalador do Driver TBODBXFB no mesmo pode-se encontrar manuais de como realizar a Instalação e os possíveis erros e suas soluções.
Nessa Primeira Parte do Artigo iremos iniciar com o Firebird 2.1, se você ainda não tem instalado baixe-o em www.firebirdsql.org. Para gerenciar o banco de dados, utilizaremos o IBExpert, que é uma das melhores front-end para administração de banco de dados Interbase e Firebird.
Considerando que seu Firebird e IBExpert estejam devidamente Instalados, vamos agora para a criação do banco de dados do exemplo, com a execução do seguinte script;
SET SQL DIALECT 3;
SET NAMES WIN1252;
CREATE DATABASE 'localhost:C:\DBExpress\BDACTIVE.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1252;
/**** Tables ****/
CREATE TABLE BANCOS (
CHAVE INTEGER NOT NULL,
BANCO INTEGER NOT NULL,
DESCRICAO VARCHAR(25) NOT NULL,
AGENCIA INTEGER,
CONTA INTEGER,
DVCONTA INTEGER
);
/**** Primary Keys ****/
ALTER TABLE BANCOS ADD CONSTRAINT PK_BANCO PRIMARY KEY (CHAVE);
Após a Criação do Banco de Dados abra o Delphi e vá em “File – New - VCL Forms Application – Delphi” conforme imagem 1 para iniciar a criação da Aplicação.

Imagem 1 – Criação do Projeto
Altere a Propriedade Name para “FRMDemoDBExpress”, Caption para “Demo Conexão DBExpress” e Position para “poDesktopCenter” após realizar a alteração clique em “File – Save All” salve a unit como “uDemoDBExpress.pas” o Projects como “DemoDBExpress.dproj”.
Adicione ao Projeto o componente TpageControl renomeie para “pcPrincipal”, altere a propriedade Align para alClient, clique com o botão direito no “PageControl” e selecione a opção “New Page” conforme Imagem 2 e renomei para “tsFirebird”

Imagem 2 – Adicionando Page

Adicione ao Projeto os Componentes TSQLConnection, TSQLDataSet, TDataSetProvider, TClientDataSet e TDataSource. Renomeie para SQLCFireBird, SQLDSFirebrid, DSPFirebird, CDSFirebird e DSFirebird para que fique de de forma clara cada SGDBS.
O Assistente de Criação de Conexão do DBExpress foi reformulado fazendo com que apenas se utilize o Data Explorer o que não havia necessidade no Delphi 7 para acessar vá em View – Data Explorer será aberto no lado Direito da Tela conforme Imagem 3.

Imagem 3 – Data Explorer
Selecione o Driver TBODBXFB clique com o Botão Direito do Mouse e vá na opção Add New Connection abrir uma tela com as opções Provider Name que vira com o Driver já previamente selecionado coloque o Nome da Conexão como “DemoDBExpress” após a criação da conexão necessitamos selecionar a suas opções para isso clique com o Botão Direito na Conexão e vá em Modify Connection ira abir uma janela onde definiremos os parâmetros Server Name, Database Name, User Name e Password. No “Server Name” é o parâmetro onde definiremos o IP ou Nome do Servidor do Banco de Dados, “Database Name” será definido o caminho local da Base de Dados no Servidor, “User Name e Password” é o Usuário e Senha que iremos utilizar para realizarmos a Conexão, no nosso caso como estamos trabalhando localmente os parâmetros ficaram como da Imagem 4.
O Test Connection não Funcionara devido a erro do driver que está sendo corrigido pelo desenvolvedor, caso haja necessidade de alterar a porta do Serviço do Firebird clique na opção Advanced que o mesmo tem a opção “Port” que pode se alterada.

Imagem 4 – Parâmetros Conexão Firebird

Após realizarmos a configuração da Conexão temos que seleciona la para isso Abra o Object Inspector do SQLCFirebird na opção ConnectionName selecione a Conexão que criamos DemoDBExpress altere a propriedade LoginPrompt para False, finalizamos a criação da nossa Conexão agora utilizaremos em nossa aplicação.
No SQLDSFirebird na propriedade SQLConnection selecione o SQLCFirebird e vá no CommandText e adicione a SQL “select CHAVE, BANCO, DESCRICAO, AGENCIA, CONTA, DVCONTA from BANCOS” após a inserção da SQL de um duplo clique no componente será aberto o Fields Editor clique com o Botão Direito e vá em Add all Fields, após adicionarmos os Fiels temos que configurar as Provider Flags de cada Campo o que implica diretamente na velocidade de nossa aplicação, as opções são:
pfInKey = Se marcado como true, o DSP entenderá que o campo é uma/faz parte da chave primária da tabela.
pfInUpdate = Se marcado como true, o DSP entenderá que o campo será atualizável.
pfInWhere = Se marcado como true, indicará que este campo poderá fazer parte do where nos sql's de alteração (Updates e Deletes).
pfHidden = Se marcado como false, o DSP ignora o campo.
 Na nossa aplicação Ficara da seguinte forma: 
Opções
CHAVE
BANCO
DESCRICAO
AGENCIA
CONTA
DVCONTA
pfInUpdate
True
True
True
True
True
True
pfInWhere
True
False
False
False
False
False
pfInKey
True
False
False
False
False
False
pfHidden
False
False
False
False
False
False
 
 Após configuramos as opções vamos Configurar o DataSetProvider, ClientDataSet e o DataSource, que terá as seguinte opções:
 DataSetProvider: Dataset “SQLDSFirebird”, UpdateMode “upWhereKeyOnly” e a Options “[poAutoRefresh,poPropogateChanges,poUseQuoteChar]”.
 ClientDataSet: ProviderName “DSPFirebird”  após a seleção do Provider de um duplo clique no componente será aberto o Fields Editor clique com o Botão Direito e vá em Add all Fields e Configure o  Provider Flags de cada Campo.
DataSource: DataSet “CDSFirebird”.


Adicione os Fields do ClientDataSet ao Form, TDBNavigator renomeio para dbnFireBird, DBGrid renomeio para dbgFirebird e altere os DataSource para “DSFirebird”, TBitBtn renomeio para bitFirebird no OnClick do Botão adicione o comando “CDSFirebird.ApplyUpdates(0);” e TBitBtn renomeio para bitConectar no OnClick do Botão adicione o comando abaixo:





Conclusão:
Nessa nossa primeira parte vimos como criar uma conexão pelo DBExpress em tempo de Projeto futuramente veremos como passar os parâmetros em tempo de execução e conexão utilizando outros SGDBs como o Oracle 10G XE, dentre outras funcionalidade oferecidas pelo DBExpress e o CDS. Obrigado e até a próxima.