Problema com CallableStatement

Não consigo entender o que está errado…

[code] String user = request.getParameter("Login");
String senha = request.getParameter("Passwd");
System.out.println(user + " - " + senha);

        	//chamar Stored Procedure
        	String sql = "{call PW[?,?,?,?]}";
        	CallableStatement cstmt = conn.prepareCall(sql);
    		cstmt.setString(1, user);  // <= O ERRO ESTÁ AKI
        	cstmt.setString(2, senha);
    		cstmt.registerOutParameter(3,Types.OTHER);
    		cstmt.registerOutParameter(4,Types.OTHER);
        	cstmt.execute();
        	aut = cstmt.getString(3);
        	acl = cstmt.getString(4);[/code]

ele não passa pelo setString, mas não sei o por que???

Oi

Amigo, deve estar dando alguma Exception aqui

CallableStatement cstmt = conn.prepareCall(sql); 

Por acaso este trecho não está dentro de um try/catch?

T+

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…

[code]

String user = request.getParameter("Login");
System.out.println(user); //Ele imprime o nome do usuário
cstmt.setString(1, user); //gera a exception aqui [/code]

Desde já agradeço a ajuda…

Consegui resolver o problema chamando a Stored Procedure de outra forma…

[code] if (conn != null) {

        	String user = request.getParameter("sLogin_Login");
        	String senha = request.getParameter("sPasswd_Login");
        	System.out.println(user + " - " + senha);
        	
        	//chamar Stored Procedure de login no Banco de Dados
        	String sql = "{? = call PW(?,?)}";
        	CallableStatement cstmt = 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();

	         String aut = (String) cstmt.getObject(1); 


[/code]

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

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.