Introdução FireDAC
Acesso multi-banco para Delphi e C++ Builder
Diego Campos Rosa
Créditos
“Para aprender Delphi, não basta saber como utilizar
os componentes. Deve-se entender como funcionam e,
se possível, como foram feitos.”
Gustavo Chaurais
AGENDA
Agenda
• O que é FireDAC
• Visão geral da arquitetura
• Principais características
• Pratica
• Perguntas
FIREDAC
FireDAC
• Versão Embarcadero do AnyDAC
• Conjunto realmente universal para acesso a banco de dados
– Possibilitando usar as características especificas de cada
banco de dados
• Alta performance de acesso
– Desde Live Data até Array DML
• API unificada
– Abstração de SQL
– Controle de transações e de erros unificados
• Com fácil migração do BDE
Arquitetura
PRINCIPAIS
COMPONENTES
Principais Componentes
• TADConnection - Gerencia Ligação com BD
• TADTransaction - Gerencia as transações com BD
• TADMemTable - Conjunto de dados na memória
• TADQuery – Implementação da classe DataSet, que
permite execução de SQL.
• TADTable - abre uma tabela para navegação
• TADScript - Executa scripts SQL em lote
• TADUpdateSQL – Aplica atualizações que não podem
ser feitas diretamente.
• Driver Link - Descreve como configurar o driver do BD
COMPONENTES DE UI
Componentes de UI
• TFDGUIxErrorDialog: Caixa de diálogo exibe as
exceções FireDAC
• TFDGUIxLoginDialog: Caixa de diálogo permite que
os usuários insiram suas credenciais de banco de
dados
• TFDGUIxWaitCursor: Componente permite que o
controlo do cursor de espera.
• 3 implementação - FireMonkey, VCL, console
COMPONENTES DE
SERVIÇO
Componentes de Serviço
• TADXxxxBackup - Backup do BD
• TADXxxxRestore – Restauração do BD
• TADXxxxValidate - Verificação e Correção
• TADXxxxSecurity BD - Gerencie a criptografia do BD
• TADSQLiteFunction, TADSQLiteCollation -
Componentes específicos para p SQLite
OPÇÕES DO FIREDAC
Opções do FireDAC
• FetchOptions – controla o retorno de registros
• FormatOptions - controlam como os tipos das
colunas do DB são mapeados
• ResourceOptions - opções de recursos que
controlam como os recursos do sistema são
utilizados,
• UpdateOptions - opções que controlam como
FireDAC realizara o posts para o DB.
• TxOptions - controlam como as transações são
realizadas.
TRACING
TRACING
• TADMMiniFlatfileClientLink: Arquivo Texto
• TADMMiniRemoteClientLink: ADMonitor
• Attivando Tracing
• Tracing to true
• MonytorBy = FlatFile ou Remote in connection
setting
MAPEAMENTO DE
TIPOS DE DADOS
Mapeamento de tipos de dados
• Mapeamento personalizado por conexão ou
DataSet visuais
• Ou em código
COMANDOS EM LOTE
Comandos em lote
• Lotes de comando, permite executar múltiplos comandos
de SQL num único passo e processar vários conjuntos de
resultados de uma sequência.
ADQuery1.FetchOptions.AutoClose := False;
ADQuery1.SQL.Text := 'select * from orders; select * from
customers';
ADQuery1.Open;
ADQuery1.FetchAll; // assign orders records to ADMemTable1
ADMemTable1.Data := ADQuery1.Data; ADQuery1.NextRecordSet;
ADQuery1.FetchAll; // assign customers records to ADMemTable2
ADMemTable2.Data := ADQuery1.Data;
DESEMPENHO ARRAY
DML
Desempenho Array DML
• Realizado N insert / update / instruções DELETE
parametrizado por chamada
• Flexível, fácil e eficaz
• Cada parâmetro contém uma matriz de valores,
FDQuery1.Execute(FDQuery1.Params.ArraySize);
• O servidores mais lentos ou mais fracos da rede,
criam menos pacotes TCP / IP.
• INSERT registros de 10K:
– DML array -> 0,03 seg
– Normal ExecSQL -> 5,50 seg
EXECUÇÃO
ASSÍNCRONA
Execução Assíncrona
• Transações de longa duração pode ser assíntrica ou
com um tempo limite
• ResourceOptions.CmdExecMode = amAsync ,
• ResourceOptions.CmdExecMode = amCancelDialog
– execução assíncrona do diálogo
TADGUIxAsyncExecuteDialog para cencelamento
• ResourceOptions.CmdExecTimeout
• ADDataSet.AbortJob - Execução de cancelamento
EXECUÇÃO DE SQL
ESPECÍFICOS
Execução de SQL específicos
• Função Escape - uma expressão para cada banco de
dados:
select {left({ucase(RegionDescription)}, 3)},
RegionDescription from {id Region}
• Operações condicionais - permite escrever SQL
específico para cada DB:
{IF Oracle} SELECT * FROM “Region” {fi}
{IF MSSQL} SELECT * FROM [Territories] {fi}
• Macros – permite a troca de parâmetros na aplicação:
ADQuery1.SQL.Text: = SELECT * FROM &TabName;
ADQuery1.MacroByName (‘TabName’) AsIdentifier : =
Edit1.Text; ADQuery1.Open;
MIGRANDO DE BDE
Migrando de BDE
• Alta compatibilidade entre BDE e FireDAC:
– as propriedades, métodos, sobre o comportamento
Perguntas?
• Portal de Treinamentos e Vagas – http://www.edobrasil.net/treinamentos
• Embarcadero Developer Network - http://edn.embarcadero.com
• Diretório de MVP’s - http://www.embarcadero.com.br/mvp-directory
• Documentação dos Produtos - http://docs.embarcadero.com
• CodeRage 7 - http://www.embarcadero.com/coderage
• YouTube - http://youtube.com/user/embarcaderodobrasil
• Twitter - https://twitter.com/EmbarcaderoBR http://twitter.com/EmbarcaderoTech
• Blogs: http://blogs.embarcadero.com
• Facebook:
https://www.facebook.com/pages/Embarcadero-Delphi-Brasil/399151510134179
• atendimento@embarcadero.com.br
• (11) 5643-1333
Obrigado!
Diego Campos Rosa
dcampos@aquasoft.com.br
http://twitter.com/Diegocamposrosa
http://www.aquasoft.com.br

Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder

  • 1.
    Introdução FireDAC Acesso multi-bancopara Delphi e C++ Builder Diego Campos Rosa
  • 2.
    Créditos “Para aprender Delphi,não basta saber como utilizar os componentes. Deve-se entender como funcionam e, se possível, como foram feitos.” Gustavo Chaurais
  • 3.
  • 4.
    Agenda • O queé FireDAC • Visão geral da arquitetura • Principais características • Pratica • Perguntas
  • 5.
  • 6.
    FireDAC • Versão Embarcaderodo AnyDAC • Conjunto realmente universal para acesso a banco de dados – Possibilitando usar as características especificas de cada banco de dados • Alta performance de acesso – Desde Live Data até Array DML • API unificada – Abstração de SQL – Controle de transações e de erros unificados • Com fácil migração do BDE
  • 7.
  • 8.
  • 9.
    Principais Componentes • TADConnection- Gerencia Ligação com BD • TADTransaction - Gerencia as transações com BD • TADMemTable - Conjunto de dados na memória • TADQuery – Implementação da classe DataSet, que permite execução de SQL. • TADTable - abre uma tabela para navegação • TADScript - Executa scripts SQL em lote • TADUpdateSQL – Aplica atualizações que não podem ser feitas diretamente. • Driver Link - Descreve como configurar o driver do BD
  • 10.
  • 11.
    Componentes de UI •TFDGUIxErrorDialog: Caixa de diálogo exibe as exceções FireDAC • TFDGUIxLoginDialog: Caixa de diálogo permite que os usuários insiram suas credenciais de banco de dados • TFDGUIxWaitCursor: Componente permite que o controlo do cursor de espera. • 3 implementação - FireMonkey, VCL, console
  • 12.
  • 13.
    Componentes de Serviço •TADXxxxBackup - Backup do BD • TADXxxxRestore – Restauração do BD • TADXxxxValidate - Verificação e Correção • TADXxxxSecurity BD - Gerencie a criptografia do BD • TADSQLiteFunction, TADSQLiteCollation - Componentes específicos para p SQLite
  • 14.
  • 15.
    Opções do FireDAC •FetchOptions – controla o retorno de registros • FormatOptions - controlam como os tipos das colunas do DB são mapeados • ResourceOptions - opções de recursos que controlam como os recursos do sistema são utilizados, • UpdateOptions - opções que controlam como FireDAC realizara o posts para o DB. • TxOptions - controlam como as transações são realizadas.
  • 16.
  • 17.
    TRACING • TADMMiniFlatfileClientLink: ArquivoTexto • TADMMiniRemoteClientLink: ADMonitor • Attivando Tracing • Tracing to true • MonytorBy = FlatFile ou Remote in connection setting
  • 18.
  • 19.
    Mapeamento de tiposde dados • Mapeamento personalizado por conexão ou DataSet visuais • Ou em código
  • 20.
  • 21.
    Comandos em lote •Lotes de comando, permite executar múltiplos comandos de SQL num único passo e processar vários conjuntos de resultados de uma sequência. ADQuery1.FetchOptions.AutoClose := False; ADQuery1.SQL.Text := 'select * from orders; select * from customers'; ADQuery1.Open; ADQuery1.FetchAll; // assign orders records to ADMemTable1 ADMemTable1.Data := ADQuery1.Data; ADQuery1.NextRecordSet; ADQuery1.FetchAll; // assign customers records to ADMemTable2 ADMemTable2.Data := ADQuery1.Data;
  • 22.
  • 23.
    Desempenho Array DML •Realizado N insert / update / instruções DELETE parametrizado por chamada • Flexível, fácil e eficaz • Cada parâmetro contém uma matriz de valores, FDQuery1.Execute(FDQuery1.Params.ArraySize); • O servidores mais lentos ou mais fracos da rede, criam menos pacotes TCP / IP. • INSERT registros de 10K: – DML array -> 0,03 seg – Normal ExecSQL -> 5,50 seg
  • 24.
  • 25.
    Execução Assíncrona • Transaçõesde longa duração pode ser assíntrica ou com um tempo limite • ResourceOptions.CmdExecMode = amAsync , • ResourceOptions.CmdExecMode = amCancelDialog – execução assíncrona do diálogo TADGUIxAsyncExecuteDialog para cencelamento • ResourceOptions.CmdExecTimeout • ADDataSet.AbortJob - Execução de cancelamento
  • 26.
  • 27.
    Execução de SQLespecíficos • Função Escape - uma expressão para cada banco de dados: select {left({ucase(RegionDescription)}, 3)}, RegionDescription from {id Region} • Operações condicionais - permite escrever SQL específico para cada DB: {IF Oracle} SELECT * FROM “Region” {fi} {IF MSSQL} SELECT * FROM [Territories] {fi} • Macros – permite a troca de parâmetros na aplicação: ADQuery1.SQL.Text: = SELECT * FROM &TabName; ADQuery1.MacroByName (‘TabName’) AsIdentifier : = Edit1.Text; ADQuery1.Open;
  • 28.
  • 29.
    Migrando de BDE •Alta compatibilidade entre BDE e FireDAC: – as propriedades, métodos, sobre o comportamento
  • 30.
    Perguntas? • Portal deTreinamentos e Vagas – http://www.edobrasil.net/treinamentos • Embarcadero Developer Network - http://edn.embarcadero.com • Diretório de MVP’s - http://www.embarcadero.com.br/mvp-directory • Documentação dos Produtos - http://docs.embarcadero.com • CodeRage 7 - http://www.embarcadero.com/coderage • YouTube - http://youtube.com/user/embarcaderodobrasil • Twitter - https://twitter.com/EmbarcaderoBR http://twitter.com/EmbarcaderoTech • Blogs: http://blogs.embarcadero.com • Facebook: https://www.facebook.com/pages/Embarcadero-Delphi-Brasil/399151510134179 • atendimento@embarcadero.com.br • (11) 5643-1333
  • 31.

Notas do Editor

  • #10 ADQuery tem cache de apoio Use ADMenTable manter instantâneo de dados na memória, carregar múltiplas