Fazer consulta SQL no delphi

29/12/2015

0

Bom, o que estou tentando fazer é um Select em uma tabela temporária no Delphi pelo componente TQuery. Segue o código abaixo:

oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT *');
oQuery.SQL.Add('FROM #TabTemp');
oQuery.SQL.Add('WHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%" ');
oQuery.Open;

Quando tento abrir a query, recebo o erro na segunda linha. Se alguém puder me ajudar eu agradeço.
Matheus Gomes

Matheus Gomes

Responder

Posts

29/12/2015

Douglas

Opa Matheus, tudo bem?

Você poderia postar o código com o erro? Assim fica mais fácil de analisar. :)
Responder

29/12/2015

William

Um dos motivos está na concatenação de strings, faltando espaços então sua instrução SQL estava sendo executada assim:
SELECT *FROM #TabTempWHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%"


Adicionando espaços ao final das concatenações:
oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT * ');
oQuery.SQL.Add('FROM #TabTemp ');
oQuery.SQL.Add('WHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%" ');
oQuery.Open;
Responder

29/12/2015

Douglas

Opa William, tudo bem?

Permita-me fazer uma pequena correção no código? Segue abaixo:

oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT * ');
oQuery.SQL.Add('FROM #TabTemp ');
oQuery.SQL.Add('WHERE DES_PROD LIKE ' +  QuotedStr('%' + EditPesquisa.Text + '%');
oQuery.Open;


No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Responder

29/12/2015

William

Perfeito Douglas.
Responder

27/12/2022

Armaky

Opa William, tudo bem?

Permita-me fazer uma pequena correção no código? Segue abaixo:

oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT * ');
oQuery.SQL.Add('FROM #TabTemp ');
oQuery.SQL.Add('WHERE DES_PROD LIKE ' +  QuotedStr('%' + EditPesquisa.Text + '%');
oQuery.Open;


No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Responder

27/12/2022

Arthur Heinrich

Opa William, tudo bem?

Permita-me fazer uma pequena correção no código? Segue abaixo:

oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT * ');
oQuery.SQL.Add('FROM #TabTemp ');
oQuery.SQL.Add('WHERE DES_PROD LIKE ' +  QuotedStr('%' + EditPesquisa.Text + '%');
oQuery.Open;


No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.


Além de corrigir o problema das aspas simples, ao utilizar o QuotedStr() evitamos problemas com SQL Injection.
Porém, ainda resta um problema de performance, uma vez que o texto pesquisado sempre inicia com '%', invalidando qualquer possibilidade de uso de índices.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar