Consulta. Ajuda eu!

5 respostas
L

Pessoal eu estou com uma duvida ja faz um bom tempo e não estou conseguindo resolver.
Eu estou começando a trabalhar com java e se alguém poder me ajuda ia agradecer.

É o seguinte:

Eu tenho um form de consulta, onde eu tenho campos texto e de seleção. Oque ocorre é o seguinte:
O usuário preenche o form, mas nem todos os campos são obrigatorios. Por ex:
campo: nome, idade e sexo. O usuário bota só o nome e manda pesquisar o sistema tem que pegar os dados fornecidos pelo usuário e fazer um consulta não importa quantos dados ele fornesse para a consulta, tem que fazer a mesma com oque tem.
Só que eu nao consigo. Alguém tem um pequeno exemplo que possa me ajudar.

Creio que essa minha duvida seja duvida de muitas pessoas que estão começando, pois muito raro um
sistema que não tenha consulta. hehe!

5 Respostas

saulods

Opa… uma idéia bacana é vc criar FiLTROS (alguns BEANS com GEtters e Setters)… e quando vc for
fazer a busca vc Estancia ele no construtor do Método vc passe o bean estanciado… mais ou menos assim

/* vc passa como construtor o filtro e o valida acrescentando o msm na String sql (para construir a String vc pode usar outras impl da Class String…isso é apenas uma idéia) */

public List findByPrimaryKey(FiltroGenerico pk) throws DAOException {

String sql = select * from crs_curso;

if (pk.getNome() != null && !pk.getNome().equals("")) {

sql += " where crs_vc_nome=’" + pk.getNome() + “’”;

}

System.out.println(sql);

PreparedStatement stmt;

Mais ou menos essa idéia, q resolve seu problema, se o Usuário passar o NOME, END, ele vai Pegar se não ele passa direto

abraço

rpfragoso

Só é vc testar quais campos estão preenchidos e para cada caso contruir uma consulta diferente.

L

Blz pessoal, vou tirar uma idéia disso e vou tentar fazer aqui. hehe!
Brigadão!!

alanbrasil1984

po brother coloca oque vc ja tem pronto para podermos ajudar de acordo com sua aplicação…

L

Cara isso é algo que eu tenho pronto, mas oque eu vou fazer ou melhor oque tenho que fazer é maior,
mas ja da pra tirarem uma idéia.

package br.com.brde.sis.dados.RA;

import java.sql.SQLException;

import br.com.brde.infra.InitInfra;
import br.com.brde.infra.bd.jdbc.ConsultaBD;

public class CnaeBD extends ConsultaBD {
	
	public void buscaDados(){
		System.out.println("----------- S_CNAE -----------------");
		String sql = " SELECT DISTINCT CNAE, DESCRICAO, ATIVO"
				+ " FROM BRRA.S_CNAE" 
				+ " ORDER BY ATIVO, CNAE";
		System.out.println(sql);
		super.buscaDados( sql, InitInfra.CONSULTA_RESULTADO_UNIDIRECIONAL );

		sql = null;
	}
	
	public String getCnae(){
		
		try {
			dado = ( resultSet.getString("CNAE") == null ? "" : resultSet.getString("CNAE") );
		}
		catch ( SQLException e )
		{
			System.out.println( InitInfra.MSG_ERRO + "(MunicipioBD.getCnae): " + e );
			dado = "";
		}
		return dado;
	}
	
	public String getDescricao(){
		
		try {
			dado = ( resultSet.getString("DESCRICAO") == null ? "" : resultSet.getString("DESCRICAO") );
		}
		catch ( SQLException e )
		{
			System.out.println( InitInfra.MSG_ERRO + "(MunicipioBD.getDescricao): " + e );
			dado = "";
		}
		return dado;
	}
	
	public String getAtivo()
	{
		try {
			dado = ( resultSet.getString("ATIVO") == null ? "" : resultSet.getString("ATIVO") );
		}
		catch ( SQLException e )
		{
			System.out.println( InitInfra.MSG_ERRO + "(MunicipioBD.getAtivo): " + e );
			dado = "";
		}
		return dado;
	}

}

Agora digamos agora eu tenho mais umas 3 classe iguais a essa fazendo seus get e set, para o
formulario que eu falei no post la encima.

Oque eu preciso e fazer a classe que junta todas essas e fazer a consulta.
A classe que vai fica cheia de if e else para poder fazer os filtros e tudo mais.
O sql que eu não estou conseguindo montar.
Vou dar mais um exemplo das outras 3 classes, não vou botar todas pois se não acho que não vai caber.
hehehe!

package br.com.brde.sis.dados.RA;

import java.sql.SQLException;

import br.com.brde.infra.InitInfra;
import br.com.brde.infra.bd.jdbc.ConsultaBD;

public class MunicipioBD extends ConsultaBD { 
	
	public void buscaDados(){ 
		System.out.println("----------- MunicipioBD -------------");
		String sql = " SELECT DISTINCT ESTADO, CIDADE"
				+ " FOM BRRA.S_CIDADE"
				+ " ORDER BY ESTADO, CIDADE";
		System.out.println(sql);
		super.buscaDados( sql, InitInfra.CONSULTA_RESULTADO_UNIDIRECIONAL );

		sql = null;
	}
		
	public String getCidade(){
		
		try {
			dado = ( resultSet.getString("CIDADE") == null ? "" : resultSet.getString("CIDADE") );
		}
		catch ( SQLException e )
		{
			System.out.println( InitInfra.MSG_ERRO + "(MunicipioBD.getCidade): " + e );
			dado = "";
		}
		return dado;
	}
	
	public String getEstado(){
		
		try {
			dado = ( resultSet.getString("ESTADO") == null ? "" : resultSet.getString("ESTADO") );
		}
		catch ( SQLException e )
		{
			System.out.println( InitInfra.MSG_ERRO + "(MunicipioBD.getEstado): " + e );
			dado = "";
		}
		return dado;
	}
	
}
Criado 8 de agosto de 2008
Ultima resposta 8 de ago. de 2008
Respostas 5
Participantes 4