Pesquisar no mysql

7 respostas
K

bom dia galera,

preciso fazer uma pesquisa no banco de dados que me retorne os valores escolhidos.

eu tenho os seguintes campos
nome, mes, ano, opcao,previsao, data, valor.

eu normalmente uso o codigo que vai pegar todas as linhas e no "java" coloco um "if" simples que me retorna oq eu quero, mas nesse caso tenho no java 3 campos de pesquisa e um botao Pesquisar

JcomboBox "mes" que vai de ("vazio[0]" e de [1] a [12] janeiro/dezembro (correspondente ao setMes)
jcomboBox de duas opcoes Aberto/Pago (correspondente ao setOpcao)
jTextField ano (correspondente ao setAno)
botao Pesquisar.

o que eu eu preciso fazer é retornar a linha que tiver as tres opcoes iguais, e se o jcombobox Mes for vazio retornar todos os meses e se o JTextField ano tb for fazio retornar todos os anos.

como eu posso resolver isso?
o meu codigo do mysql segue abaixo.

public ArrayList<Pagar> selectPagar() {

		ArrayList<Pagar> pagars = new ArrayList<Pagar>();
		String query = "SELECT * FROM pagar";

		try {
			Statement statement = (Statement) conection.createStatement();
			ResultSet rs = (ResultSet) statement.executeQuery(query);

			Pagar pagar = null;
			while (rs.next()) {
				pagar = new Pagar();
				pagar.setId(rs.getInt("id"));
				pagar.setNome(rs.getString("nome"));
				pagar.setMes(rs.getString("mes"));
				pagar.setAno(rs.getString("ano"));
				pagar.setOpcao(rs.getString("opcao"));
				pagar.setPrevisao(rs.getString("previsao"));
				pagar.setData(rs.getString("data"));
				pagar.setValor(rs.getString("valor"));
				pagars.add(pagar);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}

		return pagars;
	}

7 Respostas

leonardoMachado

qual a dificuldade de fazer isso?

K

é pq eu nao sei mexer direito com o mysql, eu posso colocar um where opcoes, mas se os campos forem vazios ele me retorna todos?

leonardoMachado

sugiro vc a dar uma estuda em banco de dados…
ae qualquer erro ou duvia que vc tiver, pergunta ae que tentamos resolver…
Abraços

K

tenta assim:

public ArrayList<Pagar> selectPagar() {  
      
            ArrayList<Pagar> pagars = new ArrayList<Pagar>();  
            String query = "SELECT * FROM pagar WHERE 1=1";  
      
            if (comboBoxMes.getValue() != null)
                query += " AND mes = "+comboBoxMes.getValue()+""; 
            if (comboBoxAberto.getValue() != null)
                query +=  " AND opcao = "+comboBoxAberto.getValue()+""; 
             if (jTextFieldAno.getValue() != null)
                query +=  " AND ano = "+jTextFieldAno.getValue()+"";

tem coisa errada no código... mas é só pra vc pegar a idéia ok?

Abraço!

K

agradeco muito keyboarder, vou ver se consigo aqui. abracao

K

posso fazer algo tipo isso?

public ArrayList<Pagar> selectPagarCustomizado(String mesPagar, String anoPagar) {
		 ArrayList<Pagar> pagars = new ArrayList<Pagar>();     
		String query = "SELECT * FROM pagar WHERE mes=\'"+mesPagar+"\' AND ano=\'"+anoPagar+"\;
	
		 if (mesPagar != null)   
	            query += " AND mes = "+mesPagar;   
	     if (anoPagar != null)   
	            query +=  " AND ano = "+anoPagar;   
		try {
			Statement statement = (Statement) conection.createStatement();
			ResultSet rs = (ResultSet) statement.executeQuery(query);

			Pagar pagar = null;
			while (rs.next()) {
				pagar = new Pagar();
				pagar.setId(rs.getInt("id"));
				pagar.setNome(rs.getString("nome"));
				pagar.setMes(rs.getString("mes"));
				pagar.setAno(rs.getString("ano"));
				pagar.setOpcao(rs.getString("opcao"));
				pagar.setPrevisao(rs.getString("previsao"));
				pagar.setData(rs.getString("data"));
				pagar.setValor(rs.getString("valor"));
				pagars.add(pagar);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}

		return pagars;
	}
K

tenho a impressão de que dessa forma vc poderá utilizar o mesmo campo como filtro duas vezes… talvez seje melhor deixar assim:

public ArrayList<Pagar> selectPagarCustomizado(String mesPagar, String anoPagar) {
		 ArrayList<Pagar> pagars = new ArrayList<Pagar>();     
		String query = "SELECT * FROM pagar WHERE 1=1";
	
		 if (mesPagar != null)   
	            query += " AND mes = "+mesPagar;   
	        if (anoPagar != null)   
	            query +=  " AND ano = "+anoPagar;

Abraço!

Criado 15 de janeiro de 2009
Ultima resposta 15 de jan. de 2009
Respostas 7
Participantes 3