socorro ae pessoal! estou tentando chamar uma JSP a partir do meu SERVLET e olha a merda que acontece:
java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 1).
23/10/2009 16:45:39 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ServletCampanha threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
Adianto aos senhores que debugei o code e ele passa por todas as camadas de boa, passando e recebendo os parametros!!!
o problema ocorre me parece que ocorre antes de entar na JSP!!! POSSO ESTAR ERRADO
java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 1).
vc ta passando a quantidade de indices errados, isso é erro de banco, olha lá “SQLException”
phmjunior
posta teu select para vermos o erro.
celox
Esse é o código da minha DAO que da um select no Banco:
publicArrayList<DTOcampanha> daoSeaCampanha(DTOcampanha cam) throws SQLException {try{
DTOcampanhadto=newDTOcampanha();ArrayList<DTOcampanha> Lcampanhas = new ArrayList<DTOcampanha>() ;ResultSetrs=null;pstmt=connection.prepareStatement("select nome, beneficiado from campanhas where email = ? ");pstmt.setString(1,cam.getEmail());rs=pstmt.executeQuery();while(rs.next()){
dto.setNome(rs.getString("nome"));dto.setBeneficiado(rs.getString("beneficiado"));Lcampanhas.add(dto);}
connection.commit();returnLcampanhas;}catch(SQLExceptionsqle){
connection.rollback();thrownewSQLException(sqle);}
}
ainda nao entendi essa questao de que meu select ta errado :S
no mysql console eu fiz o select da mesma forma
phmjunior
o erro java.sql.SQLException diz q vc ta com problemas em uma destas instruções :
Connection
PreparedStatement
ResultSet
e mais outros da lib java.sql.*;
neste teu caso com certeza o erro deve ta em alguma chamada de select ou escrita.
da uma olhada no parenteze de seus selects ou da abertura de chamada deles
ex:
pstmt = connection.prepareStatement(
"select nome, beneficiado from campanhas where email = ? ");
pstmt.setString(1, cam.getEmail());
da uma olhada direitinho q o erro ta por lá, uma vez q a classe só compila quando ta escrita certinha. então o erro deve ta porai.
o teu pstmt deve ser o PreparedStatement ond vc disse q ele se chamaria assim? q nem vc fez com o ResultSet rs = null;
veja também se o nome de usuário usado e o principal se não for use a chamada do select assim:
//veja aqui o nome do esquema da minha base de dados"select nome, beneficiado from meuesquema.campanhas where email = ? "
no mais até mais.
vanzella
não deve ser essa metodo que ta dando erro, posta o erro todo pra identificar a classe e o método.
packageclassesJava;importjava.awt.List;importjava.sql.SQLException;importjava.util.ArrayList;publicclassModelCampanha{publicArrayListmodelSeaCampanha(DTOcampanhacam)throwsSQLException{returndaocam.daoSeaCampanha(cam);}}// RESUMINDO A CLASSE NEH!
e a DAO, que insere no Banco de devolve pra SERVLET!!
publicArrayList<DTOcampanha> daoSeaCampanha(DTOcampanha cam) throws SQLException {try{
DTOcampanhadto=newDTOcampanha();ArrayList<DTOcampanha> Lcampanhas = new ArrayList<DTOcampanha>() ;ResultSetrs=null;pstmt=connection.prepareStatement("select nome, beneficiado from campanhas where email = ? ");pstmt.setString(1,cam.getEmail());rs=pstmt.executeQuery();while(rs.next()){
dto.setNome(rs.getString("nome"));dto.setBeneficiado(rs.getString("beneficiado"));Lcampanhas.add(dto);}
connection.commit();returnLcampanhas;}catch(SQLExceptionsqle){
connection.rollback();thrownewSQLException(sqle);}
}
}
GALERA É COISA DEMAIS! MAS É PRA MONOGRAFIA… da essa força ae! =]
aguardo!
celox
QUERO SABER QUE PORRA É ESSA:
java.lang.IllegalStateException: Cannot forward after response has been committed
:evil: :evil: :evil: :evil: :evil:
paulofernandesjr
java.lang.IllegalStateException ocorre quando você tenta passar um parametro que o metodo não suporta
reveja o contexto do seu código
até onde eu sei, você só pode dar um foward no final do seu método
RequestDispatcher r = request.getRequestDispatcher("/JSP/sucessoDispCampanha.jsp");
r.forward(request, response);
dentro do switch acho que não permite, pois o compilador não sabe se tem alguma coisa
diferente do return que encerra o método
abraço
celox
hmmm, acho entendi…
mas mesmo sendo tratado no try catch???
porra, quer dizer que não posso usar tantos fowards… entao essa metodologia é muito ruim cara… isso mesmo?
porra… agora pelo visto terei q fazer UM SERVLET pra CADA AÇÃO do caso de uso…
uai brother! mas pq nao da certo assim? a diferença é q eu nao fiz só uma var dentro de cada case, eu ja chamei o foward(); q bulufas eu n sei nao funciona.