Buscar

Conexão com SGDBS Utilizando DBExpress – Parte 2

nome

Pedro Ernesto Braga

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Conexão com SGDBS Utilizando DBExpress – Parte 2

Nesse Artigo veremos como passar os Parametros para que a conexão com o banco seja carregada dinamicamente e veremos como é simples conectar ao banco Oracle 10G Express.

Para visualizar o Artigo Anterior clique aqui.

A versão do Oracle Express que iremos utilizar tem algumas restrições sendo as principais expaço de armazenamento permitindo apenas 5 GB de banco sendo que cerca de 20% é ocupada pelas tabelas de sistema e cache e aceita apenas 1GB de Memoria já as demais versões são mais flexiveis contudo tem um custo elevado. Para realizar o download acesse:

http://www.oracle.com/technology/software/products/database/xe/index.html

A versão Express possui uma home onde se pode controlar totalmente as informações constantes no banco de dados contudo para facilitar podemos usar a ferramenta Oracle SQL Developer disponivel no site http://www.oracle.com/technology/software/products/sql/index.html

Apos a Instalação do Oracle Crie um novo usuario e execute o script para criar a tabela e a chave Primaria, adicione uma nova aba dois button(Abir Conexão e Aplicar Alterações) e os componentes para podermos acessar o banco de dados.

Crie uma nova conexão no DataExplorer utilizando o Driver Oracle (Nativo do Delphi) no campo DataBaseName coloque o Nome da Instancia do Oracle a qual quer se conectar usuario e senha conforma imagem 1.


Altere no SQLConnection do Oracle em Driver a propriedade “DecimalSeparetor” para o valor ',' ou invés de '. ' para evitar erro com campos numericos.

Adicione a Sql e os Fields no SQLDSOracle e no CDSOracle configure o Provader Flag dos Campos, adicione um TDBNavigator e DBGrid e os configure.

Adicione a pasta do Projeto as seguintes DLL (dbexpint.dll, dbxint.dll, dbxmss30.dll, dbxora.dll, fbclient.dll, midas.dll, msvcr71.dll, oci.dll, tbodbxfb.dll) e os INI (dbxconnections.ini, dbxdrivers.ini), o arquivo dbxconnections.ini pode estar sem conteudo porem o Framework verifica a sua existencia no execução.

Crie um arquivo com o nome de CONFIG.INI e adicione o conteudo abaixo:

[FIREBIRD]
ConnectionName=DemoDBExpressFB
drivername=TBODBXFB
hostname=localhost
user_name=SYSDBA
password=masterkey
port=3050
Database=D:\Projetos\ArtigoActiveDelphi\BDACTIVE.FDB

[ORACLE]
ConnectionName=DemoDBExpressOracle
drivername=ORACLE
hostname=localhost
user_name=Pedro
password=12345678
port=1521
Database=XE

Agora vamos ao projeto para carregar as informações acima como parametro na conexão com o banco declare no Uses o unit IniFiles e crir a função abaixo:

function TFRMDemoDBExpress.LerIni(Arquivo, Alias, Chave, Default: String): String;
var  config: TIniFile;
begin
 config := TIniFile.Create(ExtractFilePath(Application.ExeName)+Arquivo);
 Result := config.ReadString(Alias,Chave,Default);
end;

No OnClick do botão Abrir Conexão do Firebird altere o codigo conforme abaixo:

procedure TFRMDemoDBExpress.bitConectarFireBirdClick(Sender: TObject);
begin
  SQLCFirebird.Close;
 try
   SQLCFirebird.ConnectionName := LerIni('CONFIG.INI','FIREBIRD','ConnectionName','DEMODBEXPRESSFB');//Carregar o Nome da Conexão com o Banco
   SQLCFirebird.ParamsLoaded   := True;
   SQLCFirebird.DriverName     := LerIni('CONFIG.INI','FIREBIRD','drivername','TBODBXFB');//Carregar o Driver a Ser utilizado
   SQLCFirebird.GetDriverFunc  := 'getSQLDriver';//Função do Driver
   SQLCFirebird.LibraryName    := 'tbodbxfb.dll';//Dll do Driver
   SQLCFirebird.VendorLib      := 'fbclient.dll';//Dll do Client SGDB
   SQLCFirebird.Params.Add('drivername='+LerIni('CONFIG.INI','FIREBIRD','drivername','TBODBXFB'));//Carregar o Driver a Ser utilizado
   SQLCFirebird.Params.Add('hostname='+LerIni('CONFIG.INI','FIREBIRD','hostname','localhost'));//Nome do HOST "Servidor"
   SQLCFirebird.Params.Add('user_name='+LerIni('CONFIG.INI','FIREBIRD','user_name','SYSDBA'));
   SQLCFirebird.Params.Add('password='+LerIni('CONFIG.INI','FIREBIRD','password','masterkey'));
   SQLCFirebird.Params.Add('port='+LerIni('CONFIG.INI','FIREBIRD','port','3050'));//Porta de Configuração do SGDB
   SQLCFirebird.Params.Add('Database='+LerIni('CONFIG.INI','FIREBIRD','Database','C:\DBExpress\BDACTIVE.FDB'));//Caminho do Banco de dados
   SQLCFirebird.Params.Add('blobsize=-1');
   SQLCFirebird.Open;
 except
   MessageDlg('Não foi possivel Conectar ao Banco de Dados!',mtError,[mbOK],0);
   exit;
 end;
 if bitConectarFireBird.Caption = 'Abrir Conexão' then
  begin
   SQLCFirebird.Open;
   CDSFirebird.Open;
   bitConectarFireBird.Caption := 'Fechar Conexão';
  end
 else
  begin
   CDSFirebird.Close;
   SQLCFirebird.Close;
   bitConectarFireBird.Caption := 'Abrir Conexão';
  end;
end;

No OnClick do botão Abrir Conexão do Oracle coloque o código abaixo:

procedure TFRMDemoDBExpress.bitConectarOracleClick(Sender: TObject);
begin
  SQLCOracle.Close;
 try
   SQLCOracle.ConnectionName := LerIni('CONFIG.INI','ORACLE','ConnectionName','DemoDBExpressOracle');//Carregar o Nome da Conexão com o Banco
   SQLCOracle.ParamsLoaded   := True;
   SQLCOracle.DriverName     := LerIni('CONFIG.INI','ORACLE','drivername','ORACLE');//Carregar o Driver a Ser utilizado
   SQLCOracle.GetDriverFunc  := 'getSQLDriverORACLE';//Função do Driver
   SQLCOracle.LibraryName    := 'dbxora.dll';//Dll do Driver
   SQLCOracle.VendorLib      := 'oci.dll';//Dll do Client SGDB
   SQLCOracle.Params.Add('drivername='+LerIni('CONFIG.INI','ORACLE','drivername','ORACLE'));//Carregar o Driver a Ser utilizado
   SQLCOracle.Params.Add('hostname='+LerIni('CONFIG.INI','ORACLE','hostname','localhost'));//Nome do HOST "Servidor"
   SQLCOracle.Params.Add('user_name='+LerIni('CONFIG.INI','ORACLE','user_name','Pedro'));
   SQLCOracle.Params.Add('password='+LerIni('CONFIG.INI','ORACLE','password','12345678'));
   SQLCOracle.Params.Add('port='+LerIni('CONFIG.INI','ORACLE','port','1521'));//Porta de Configuração do SGDB
   SQLCOracle.Params.Add('Database='+LerIni('CONFIG.INI','ORACLE','Database','XE'));//Nome da Instancia do Banco de Dados
   SQLCOracle.Params.Add('blobsize=-1');
   SQLCOracle.Open;
 except
   MessageDlg('Não foi possivel Conectar ao Banco de Dados!',mtError,[mbOK],0);
   exit;
 end;
 if bitConectarOracle.Caption = 'Abrir Conexão' then
  begin
   SQLCOracle.Open;
   CDSOracle.Open;
   bitConectarOracle.Caption := 'Fechar Conexão';
  end
 else
  begin
   CDSOracle.Close;
   SQLCOracle.Close;
   bitConectarOracle.Caption := 'Abrir Conexão';
  end;
end;

No OnClick do botão Aplicar Alterações Coloque o código:

CDSOracle.ApplyUpdates(0);

Conclusão:

Nessa nossa segunda parte vimos como carregar os parametros para o DBExpress em tempo de Execução, conexão utilizando o Oracle 10G XE. Futuramente veremos funcionalidade oferecidas pelo DBExpress e o CDS como por exemplo a exportação de dados para Arquivos Binarios e XML.

Espero que todos aproveitem o conteudo divulgado e em caso de duvidas estou a disposição para ajudar pelo e-mail bragaped@gmail.com.

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 06/01/10
Por: Pedro Ernesto Braga
Visualizado: 38291 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009