Stringuser=request.getParameter("Login");Stringsenha=request.getParameter("Passwd");System.out.println(user+"-"+senha);//chamar Stored ProcedureStringsql="{callPW[?,?,?,?]}";CallableStatementcstmt=conn.prepareCall(sql);cstmt.setString(1,user);// <= O ERRO ESTÁ AKIcstmt.setString(2,senha);cstmt.registerOutParameter(3,Types.OTHER);cstmt.registerOutParameter(4,Types.OTHER);cstmt.execute();aut=cstmt.getString(3);acl=cstmt.getString(4);
ele não passa pelo setString, mas não sei o por que???
Por acaso este trecho não está dentro de um try/catch?
T+
U
urspPJ
Está dentro do try/catch...
ele retorna a seguinte exception = "java.sql.SQLException: Invalid parameter index 1"
Como se estivesse chamando o método incorretamente, mas aparentemente está correto...
Stringuser=request.getParameter("Login");System.out.println(user);//Ele imprime o nome do usuáriocstmt.setString(1,user);//gera a exception aqui
Desde já agradeço a ajuda....
U
urspPJ
Consegui resolver o problema chamando a Stored Procedure de outra forma...
if(conn!=null){Stringuser=request.getParameter("sLogin_Login");Stringsenha=request.getParameter("sPasswd_Login");System.out.println(user+"-"+senha);//chamar Stored Procedure de login no Banco de DadosStringsql="{?=callPW(?,?)}";CallableStatementcstmt=conn.prepareCall(sql);System.out.println("pcLogin-CallableStatement");cstmt.registerOutParameter(1,Types.OTHER);System.out.println("pcLogin-Typos");cstmt.setString(2,user);cstmt.setString(3,senha);cstmt.execute();Stringaut=(String)cstmt.getObject(1);.....
Mas lança a exception "java.lang.ClassCastException "
Como eu descubro qual classe que retorna com o "cstmt.getObject(1)" ???
A StoredProcedure deve retornar 2 valores, sendo o primeiro uma String e o segundo um int
H
hipersoftPJ
Aparentemente, há um descasamento entre o código JDBC e a sua stored procedure. Poste a sua stored procedure e o tipo do seu RDBMS para melhor avaliação.