[RESOLVED]Duvida para criar select recebendo um parametro passado pela assinatura do método

E ai pessoal, beleza?

Preciso muito de uma ajuda de vcs aqui…

Estou fazendo um método de listaAtividadesPorParametros, onde recebo um argumento em minha servlet com o dado q preciso pesquisar no banco. Porém, quando realizo a pesquisa, não me lança exception porém me mostra a mensagem que não existe dados a serem listados, mas na verdade existe sim. Com certeza minha select está errada, mas alguem poderia me dizer onde? Ou melhor, como passar o parametro recebido??

Segue o metodo abaixo:

    public List<Atividade> listarAtividadePorParametros(String numeroParamentro, String nome, String data) throws SQLException {
        Connection con = getConnection();
        String sql = "select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = '@nome' ";
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery(sql);        
        ...

Agradeço desde já a quem poder me ajudar.

Olá…

    public List<Atividade> listarAtividadePorParametros(String numeroParamentro, String nome, String data) throws SQLException {
        Connection con = getConnection();
        String sql = "select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = ' "+nome+" ' ";
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery(sql);        
        ...

Essa é a comparação feita usando o parâmetro nome, quanto aos outros descreva melhor quais atributos serão comparados com quais parâmetros.

amigo faça assim

Connection con = getConnection();   
String sql = "select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = ?";   
    
PreparedStatement stmt = con.prepareStatement(sql);   

stmt.setString(1, nome);
    
ResultSet rs = stmt.executeQuery(sql);

assim vc tira proveito do PreparedStatement;

de uma pesquisada sobre PreparedStatement, e depois sobre o padrao DAO

abrasssss

[quote=gabriel.coelho]E ai pessoal, beleza?

Preciso muito de uma ajuda de vcs aqui…

Estou fazendo um método de listaAtividadesPorParametros, onde recebo um argumento em minha servlet com o dado q preciso pesquisar no banco. Porém, quando realizo a pesquisa, não me lança exception porém me mostra a mensagem que não existe dados a serem listados, mas na verdade existe sim. Com certeza minha select está errada, mas alguem poderia me dizer onde? Ou melhor, como passar o parametro recebido??

Segue o metodo abaixo:

    public List<Atividade> listarAtividadePorParametros(String numeroParamentro, String nome, String data) throws SQLException {
        Connection con = getConnection();
        String sql = "select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = '@nome' ";
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery(sql);        
        ...

Agradeço desde já a quem poder me ajudar.[/quote]

eu faria assim:

    public List<Atividade> listarAtividadePorParametros(String numeroParamentro, String nome, String data) throws SQLException {
        Connection con = getConnection();
       StringBuffer sql = new StringBuffer();
         sql.append(" select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, ");
         sql.append(" a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL  ");
         sql.append(" from GERAL.ATIVIDADE a1 ");
         sql.append(" WHERE 1 =1 ");
         if(!nome.equalsIgnoreCase("")){
             sql.append(" and a1.DESCRICAO = ");
         }
        PreparedStatement stmt = con.prepareStatement(sql);
         
       int index =1;
     
       if(!nome.equalsIgnoreCase("")){
          stmt.setString(index++, nome);
        }
    ResultSet rs = stmt.executeQuery(sql);      
        ...

acho que isso resolve o seu problema… quanquer dúvida poste aqui…

Isso ae cara…valeu mesmo…

Agora funcionou de boa…valeu mesmo.

Abraços.

Para quem tiver essa duvida…segue abaixo como realizei esse select:

    public List<Atividade> listarAtividadePorParametros(String numeroParametro, String nome, String data) throws SQLException {
        Connection con = getConnection();
        String sql = "select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE 1=1";
        
        if(numeroParametro != null && !numeroParametro.equals("")){
            sql += " and a1.NUMERO = ?";
        }
        if(nome != null && !nome.equals("")){
            sql += " and a1.DESCRICAO = ?"; 
        }
        if(data != null && !data.equals("")){
            sql += " and a1.DATA_HORA_INICIAL = ?";
        }

        PreparedStatement stmt = con.prepareStatement(sql);
        int pos = 1;
        
        if(numeroParametro != null && !numeroParametro.equals("")){
            stmt.setString(pos++, numeroParametro);            
        }
        if(nome != null && !nome.equals("")){
            stmt.setString(pos++, nome);
        }        
        if(data != null && !data.equals("")){
            stmt.setString(pos++, data);
        }        
        
        ResultSet rs = stmt.executeQuery();

Abraços pra todos.