Pesquisa no banco

Boa Tarde pessoal

tenho um tabela no banco de dados com 14 itens porem quero fazer um jeito que o usuário escolha qual campo deseja pesquisar mas não tenho a minima ideia como fazer isso
sera que alguem poderia me ajudar ficarei grato.

eu uso o comando abaixo para fazer pesquisa no banco.

public List<HorasFuncionarios> listarHorasFuncMes(HorasFuncionarios func,String dataInicio,String dataFim) {
       String sql = "SELECT data,entrada,saida,horas_diurnas,horas_noturnas,horas_negativas,horas_extras,horas_extras_noturnas,atestado,drs FROM carga_horaria WHERE Cod_Funcionario = '"+func.getCodigoFunc()+"' AND DATA  BETWEEN '"+dataInicio+"' AND '"+dataFim+"' ORDER BY DATA ";

        //O arraylist é porque os dados se
        // encontrando no banco de dados, serão listados em um arranjo de dados
        List<HorasFuncionarios> listaDeHorasMes = new ArrayList<HorasFuncionarios>();
        try {
            PreparedStatement ps = Conexao.getConnection().prepareStatement(sql);
//            ps.setInt(1, func.getCodigoFunc());
           
            ResultSet rs = ps.executeQuery();

            if (rs != null) {
                while (rs.next()) {
                    HorasFuncionarios pesquisa = new HorasFuncionarios();
                  pesquisa.setData(rs.getString(1));
                  pesquisa.setEntradaTurno1(rs.getString(2));
                  pesquisa.setSaidaTurno1(rs.getString(3));
                  pesquisa.setHorasDiurnas(rs.getString(4));
                  pesquisa.setHorasNoturnas(rs.getString(5));
                  pesquisa.setHorasNegativas(rs.getString(6));
                  pesquisa.setHorasExtras(rs.getString(7));
                  pesquisa.setHorasExtrasNoturnas(rs.getString(8));
                  pesquisa.setAtestado(rs.getString(9));
                  pesquisa.setHorasDrs(rs.getString(10));
                    listaDeHorasMes.add(pesquisa);
                }
                return listaDeHorasMes;
            } else {
                return null;
            }


        } catch (SQLException ex) {
            return null;

        }

    }
 

E aí guimarquies1987, td beleza?

então, vc está utilizando algum framework?

pq fazer uma pesquisa no banco com 14 colunas sem uma persistência fica meio trabalhoso.

uma solução simples, porém trabalhosa, seria você montar um switch pro seu “String sql”, e dependendo do tipo de pesquisa que o usuário quiser fazer, vc passa um parâmetro diferente e o SWITCH faz o trabalho de enviar a sintaxe de sql desejada.

ou faz o seguinte, coloca tua pesquisa em um método que faz a sintaxe ser variável, passando o nome da coluna e o valor a ser pesquisado como parametros.
mais ou menos assim:

public List<TipoDeLista> buscaVariavel(String tipo, String valor){        
                 String sql = "Select '"+tipo+"'from NomeDaTabela where "+tipo+" = '"+valor+"'";
    }

não é a melhor solução, mas resolve se estiver apertado com prazo…

até!

como eu faço com framework?

Cara, você pode fazer com hibernate, para conectar com o banco, mas ai você tem que ver qual o objetivo do seu código, se vale a pena utilizar o hibernate.
dá uma pesquisada em Hibernate com persistência, pq aí você faz o mapeamento do banco pela própria classe que você quer salvar no banco, então quando você for salvar no banco ou pesquisar você passa a classe inteira por atributo, ou no caso da pesquisa você recebe o objeto inteiro e o hibernate gera o código sql.