Filtro Para fazer busca com banco de dados!

Gente, Noite!
Estou com uma dúvida muitooo tensa de SQL.
Situação :

Tenho no meu jFrame alguns textFields, suponto, jtextA,jTextB,jTextC;

O Cliente ira digitar em nenhum, 1 ,2 ou nos 3 campos. E com bases nesses campos, fara uma busca no banco de dados. O resultado deve vir igual o que esta escrito nos campos. O problema é, como são 3 campos, há 3! ( 3 * 2) possibilidades, de preencher.

Como posso fazer um comando , simples, pra fazer essa busca ?


Não sei se consegui explicar o problema muito bem, mas funciona igual aquele filtro pra buscar servidores de jogos… Não estou entendendo como fazer um comando escrito de SQL pra aquilo. Não sei ainda prepared Statements. Queria usar o Statement stm = “Select bla bla bla”;

==

Alguém pode me dar uma dica por favor?

Muito Obrigado Gente :smiley:

Eu faço o seguinte crio um objeto simples apenas com as propriedades do filtros o que o usuario digita nos campos vai para cada respectiva propriedade

entaum mando para o metodo que fara a busca esse objeto, la (uso uma implementacao criteria que fiz em cima da nativa) eu monto minha criteria


Criteria criteria = getDao().getSession().createCriteira(Peson.class);

if(obj.getNome() != null)
{
   criteria.add(Restrinctions.eq....)
}

return criteria.list();

Desculpe os erros de sintaxe, mas é que fiz na mao agora esse codigo

ate mais boa sorte

olá… no caso do SQL. pode usar o comando LIKE para colunas do tipo CHAR/VARCHAR/TEXT…
Segue um exemplo:

SELECT COLUNA
   FROM TABELA
 WHERE COLUNA_1  LIKE '%CAMPO_1%'  --> as dois '%' significa que vai pegar qualquer texto que CONTENHA 'CAMPO_1'
     AND COLUNA_2  LIKE '%CAMPO_2'     --> o '%' nessa posição vai fazer a consulta de qualquer coisa que TERMINE com 'CAMPO_2'
     AND COLUNA_3  LIKE 'CAMPO_3%'     --> o '%' nessa posição vai fazer a consulta de qualquer coisa que possui no INICIO 'CAMPO_3'
;;

Procura no manual do Banco de Dados que você está usando exemplos da cláusula LIKE (se ela existir para o BD utilizado).

[quote=gmoenik]olá… no caso do SQL. pode usar o comando LIKE para colunas do tipo CHAR/VARCHAR/TEXT…
Segue um exemplo:

SELECT COLUNA
   FROM TABELA
 WHERE COLUNA_1  LIKE '%CAMPO_1%'  --> as dois '%' significa que vai pegar qualquer texto que CONTENHA 'CAMPO_1'
     AND COLUNA_2  LIKE '%CAMPO_2'     --> o '%' nessa posição vai fazer a consulta de qualquer coisa que TERMINE com 'CAMPO_2'
     AND COLUNA_3  LIKE 'CAMPO_3%'     --> o '%' nessa posição vai fazer a consulta de qualquer coisa que possui no INICIO 'CAMPO_3'
;;

Procura no manual do Banco de Dados que você está usando exemplos da cláusula LIKE (se ela existir para o BD utilizado). [/quote]

Entendi!!! Então tem um jeito! Mas e pra colunas do tipo Date e Time ? Só essa minha duvida agora! Vou pesquisar sobre esse like e aprender mais!

Valeu Gente!!!

Select * From livrodepassagem Where DataSaida like ‘2012-07-30%’

SELECT * FROM livrodepassagem
WHERE DuracaoVoo LIKE ‘120’

Então…
existem funções no BD que converte o tipo da coluna.
legal mesmo é consultar no manual do BD que você está utilizando (as funções de parsing).
se num me engano e se for uma coluna timestamped você pode fazer o LIKE normalmente.

Oba! Aquele Código que eu passei funciona normalmente.

Agora tenho outro problema

SELECT * FROM livrodepassagem
WHERE DuracaoVoo LIKE ‘120’ AND QuantidadePassageirosRestantes Like ‘600’

Esse código funciona, mas preciso alterar isso pra isso aqui :

SELECT * FROM livrodepassagem
WHERE DuracaoVoo LIKE ‘120’ AND QuantidadePassageirosRestantes Like > ‘0’

Ou seja, quando a quantidadePassageirosRestantes For maior que ZERO, ele deve mostrar. O que eu faço ? Estou trabalhando Com INT nessa Coluna…

SELECT * FROM livrodepassagem
WHERE DuracaoVoo LIKE ‘120’ AND QuantidadePassageirosRestantes Like 600

Esse código funciona… Vou continuar fazendo testes e reportar caso consiga ou não, alguma coisa.

============

haha Deu certo

SELECT * FROM livrodepassagem
WHERE DuracaoVoo LIKE ‘120’ AND QuantidadePassageirosRestantes > 0

Galera com fazer uma pesquisa usando criteria like??
a pesquisa seria essa, ele funciona normalmente só precisaria transformar em um
método genérico.

	public List<Usuario> listarUsuarioLikeNome(String texto) {
		sessao = HibernateUtil.currentSession();
		tx = sessao.beginTransaction();

		Criteria criteira = sessao.createCriteria(Usuario.class).add(
				Restrictions.ilike("nome", "texto%"));

		List<Usuario> resultados = criteira.list();

		if (resultados == null) {
			JOptionPane.showMessageDialog(null, "Nenhum registro encontrado!");
		}

		sessao.close();

		return resultados;
	}

Galera com fazer uma pesquisa usando criteria like??
a pesquisa seria essa, ele funciona normalmente só precisaria transformar em um
método genérico.

	public List<Usuario> listarUsuarioLikeNome(String texto) {
		sessao = HibernateUtil.currentSession();
		tx = sessao.beginTransaction();

		Criteria criteira = sessao.createCriteria(Usuario.class).add(
				Restrictions.ilike("nome", "texto%"));

		List<Usuario> resultados = criteira.list();

		if (resultados == null) {
			JOptionPane.showMessageDialog(null, "Nenhum registro encontrado!");
		}

		sessao.close();

		return resultados;
	}

AdsMarcos, cria um topico pra voce, para de floodar ae.