Realizando um SELECT que recebe um parametro recebido na assinatura de um método
7 respostas
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:
publicList<Atividade>listarAtividadePorParametros(StringnumeroParamentro,Stringnome,Stringdata)throwsSQLException{Connectioncon=getConnection();Stringsql="select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = '@nome' ";PreparedStatementstmt=con.prepareStatement(sql);ResultSetrs=stmt.executeQuery(sql);...
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);Obs: Mas da uma lida no link enviado pelo colega acima que explica o correto uso do PreparedStatement.
Abraços.
Schwamberth
Não sei se é o caso de uma mudança (se daria muito trabalho), mas ja pensou em usar o Hibernate?? fica muito bom com notação JPA.
A questão de framework, claro q ajudaria, mas na empresa em q estou, estou totalmente proibido de uso de frameworks, tanto como hibernate, jpa, struts e etc.
Por isso estou usando JDBC puro. Puramente servlet, XML e java. Mas tranquilo.
gabriel.coelho
Cara…fiz exatamente como vc disse…mas me deu a seguinte exception
Falha ao converter para representação interna
E em relação ao meu Statement, não acredito q esteja errado, ou está??
publicList<Atividade>listarAtividadePorParametros(StringnumeroParametro,Stringnome,Stringdata)throwsSQLException{Connectioncon=getConnection();Stringsql="select a1.SYS_UID, a1.NUMERO, a1.DESCRICAO, a1.DATA_HORA_INICIAL, a1.DATA_HORA_FINAL from GERAL.ATIVIDADE a1 WHERE a1.DESCRICAO = '"+nome+"' ";PreparedStatementstmt=con.prepareStatement(sql);ResultSetrs=stmt.executeQuery();List<Atividade>atividades=newArrayList<Atividade>();while(rs.next()){Atividadeatividade=newAtividade();atividade.setId(rs.getInt("SYS_UID"));atividade.setNumero(rs.getInt("NUMERO"));atividade.setDescricao(rs.getString("DESCRICAO"));atividade.setDataHoraInicial(rs.getDate("DATA_HORA_INICIAL"));atividade.setDataHoraFinal(rs.getDate("DATA_HORA_FINAL"));atividades.add(atividade);}returnatividades;}
thiagocg
gabriel.coelho, da uma olhadinha no link que te enviei acima, do jeito que vc fez funciona mas vc esta abrindo uma grande brecha de segurança no seu sistema passando o parametro direto na consulta.
[]'s
emmanuelrock
Podem ser esses underscores em: DATA_HORA_INICIAL e DATA_HORA_FINAL, já que no Select eles não possuem os underscores.