Ir para conteúdo
  • Cadastre-se

dev botao

Firedac - Usar Table Ou Query Em Delphi Xe5/win32 ?


Ver Solução Respondido por Jéter Rabelo Ferreira,
  • Este tópico foi criado há 3460 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá pessoal, estamos iniciando um novo projeto na empresa e usaremos o FireDac como componente de acesso a banco de dados. Contudo percebemos que podemos acessar as tabelas usando o componente Table ou Query, sendo assim ficamos em dúvida em qual usar? Alguém com conhecimento/experiência em FireDac poderia nos aconselhar qual dos dois seria mais vantajoso usar num projeto para Win32?

Link para o comentário
Compartilhar em outros sites

  • Membros

Olá Atilio, bom dia ... "Vantajoso" é pensar no desempenho !

Independente da conexão ser feita com o Firedac, Zeos, ou qualquer outro componente, você precisa entender o que pode ser feito com um Table e com uma Query.

Vale lembrar que uma Query pode fazer a função de um Table, já o Table não pode fazer todas as funções de uma Query.

Imagine uma tabela em seu aplicativo com 50 mil registros, e você tendo a necessidade de gravar mais um. Usando um Table o processo vai carregar os 50 mil registros na memória e talvez o seu aplicativo dê uma congelada se estiver rodando numa rede. Se usar uma instrução Sql ("insert into.."), passada para uma Query, o registro será gravado e você nem vai perceber !

Talvez nossos amigos tenham uma opinião diferente, mas eu particularmente só uso Query em meus aplicativos.

 

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Solution

Bom dia Atilio.

 

Eu não utilizo o Firedac, mas sou do tempo do BDE/Paradox.

 

Hoje eu utilizo DBExpress para Firebird/MySQL e Zeos para MySQL/PostgreSQL.

 

O componente table fazia sentido no tempo do BDE/Paradox, pois era muito simples e fácil de implementar.

 

Mas, quando vamos para um BD Client/Server, com controle transacional as coisas mudam de figura.

 

Primeiro, ao dar um Open num Table, teoricamente todos os registros são retornados. Qual a  vantagem disso? Em 99% dos casos nenhuma.

 

Portanto, eu te aconselho a utilizar Query, colocando nos select's os nomes dos campos, nunca select * from ..., filtrando com where os campos desejados.

 

É dessa forma que eu trabalho desde quando "saí" do BDE, por volta de 2002. desde essa época, nunca mais utilizei um componente table, somente Query.

 

E eu fiz da seguinte forma, criei um "componente virtual" chamado TMySqlQuery, que, conforme a diretiva de compilação herda o Query do componente que estou trabalhando.. Exemplo:

{$IFDEF DBX}
  TMySQLQuery = class(TSQLQuery)
  public
    constructor Create(ACnx: TSQLConnection; ASQL: string = ''); reintroduce; overload;
    constructor Create(ASQL: string = ''); reintroduce; overload;
    destructor Destroy; override;
    function ExecutarSQL: Boolean;
  end;
{$ENDIF}

{$IFDEF MDO}
  TMySQLQuery = class(TMDOQuery)
  public
    constructor Create(ACnx: TMDODatabase; ASQL: string = ''); reintroduce; overload;
    constructor Create(ASQL: string = ''); reintroduce; overload;
    destructor Destroy; override;
    function ExecutarSQL: Boolean;
  end;
{$ENDIF}

{$IFDEF ZEOSDB}
  TMySQLQuery = class(TZQuery)
  public
    constructor Create(ACnx: TZConnection; ASQL: string = ''); reintroduce; overload;
    constructor Create(ASQL: string = ''); reintroduce; overload;
    destructor Destroy; override;
    function ExecutarSQL: Boolean;
  end;
{$ENDIF}

Bom, fica aí a minha dica.

 

Atenciosamente.

 

PS: "componente virtual" : Eu não trabalho com componentes visuais para acesso a dados. Todos são criados e destruidos por mim via código.

  • Curtir 1

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...
  • Este tópico foi criado há 3460 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...