Consulta

10 respostas
M

Bom Dia, estou desenvolvendo um aplicação com BD e estou com uma dúvida. Numa determinada tela de consulta, existem alguns campos, por exemplo: Nome, Telefone, RG e CPF. Os campos que estiverem preenchidos vão fazer parte da consulta. Se apenas nome e RG estiverem preenchidos com Rildo e 453454 respectivamente, a consulta fica:

select * from cliente
where nome = ‘Rildo’ and RG = 453454

Dependendo da quantidade de campos preenchidos a cosulta é diferente. Minha dúvida é: Como gerar a consulta SQL quando tenho muitos campos ( de forma que usar um condicional para cada caso é inviável )? Qual a forma correta de fazer isso? Estou com uma idéia de como fazer um algoritmo para resolver isso, mas só vou usá-la como última opção, preciso conhecer a forma tradicional de fazer isso.

OBS: O código SQL está junto com o código java.

Desde já agradeço, Felipe.

10 Respostas

J

geralmento faço assim
variavel
nome,telefone,rg e cpf

select * from cliente where nome=variavelNome and telefone=VariavelTelefone and rg=variavelRG and cpf=VariavelCPF

mais ou menos uma filtragem isso!

M

E ae JJandder.

Então, a consulta que eu preciso pode incluir tanto 1 campo, como todos os campos. Depende da quantidade de campos preenchidos na tela. A consulta que você fez, incluiu todos os campos. Ela serve para um consulta que possui apenas um campo? Ex: O o usuário da inteterface quer procurar apenas por nome, essa consulta serve?

Abraços, Felipe.

J

Sim! Basta o resto das variaveis fica vazia!

M

Ok. Obrigado pela ajuda!

M

Boa Noite. Fiz o teste aqui e não deu certo. Acho que é porque se uma campo não está preenchido ele é considerado null se for objeto. No caso de inteiro é 0. Assim, quando preencho apenas um campo, os outros são preenchidos com null…ai estraga a consulta. Alguém tem mais alguma idéia?

B

Coloque os teus parâmetros em um HashMap, junto com as operações que ele deve executadr sobre esse dado, e o passe para um construtor de SQL que saiba lê-lo. Vai dar um bom trabalho.

Ou use um framework como o Hibernate, que solucionou esse e muitos outros problemas há vários anos.

M

Bruno, você pode explicar com um pouco mais de detalhes? Não entendi muito bem…

B

Explicar a parte que você tem que criar todo um framework para resolver genericamente os seus problemas de consulta, ou explicar sobre o Hibernate, que já vem pronto?

M

Para resolver esse problema tenho que criar framework?? Como as pessoas faziam isso antes Hibernate? Estava pensando em fazer isso só com Java e MySql mesmo, porque minha aplicação é bem simples. Mas acho que vou seguir seu conselho, vou procurar informações sobre Hibernate. Qualquer coisa, volto aqui para perguntar.

B

Ah, se for muito simples a aplicação, faça na mão mesmo, função-a-função. Talvez alguns ifs para construir a SQL, caso ainda queira construí-la.

O problema é que nenhuma aplicação que evolui fica simples.

Criado 18 de maio de 2008
Ultima resposta 20 de mai. de 2008
Respostas 10
Participantes 3