Error al usar el PreparedStatement
    
		    Alguien me puede decir cual es el error en este código? Es la primera vez que uso el PreparedStatement... 
String sql = "SELECT COUNT(IDEMP) AS NUMERO_DE_FILAS, IDEMP, CONTRASENA, NOMBRE FROM EMPLEADOS WHERE CONTRASENA = ? AND NOMBRE = ? GROUP BY CONTRASENA, NOMBRE, IDEMP";
PreparedStatement ps = conex.prepareStatement(sql);
ps.setInt(1, contra);
ps.setString(2, login);
System.out.println(sql);
ResultSet rs = ps.executeQuery(sql);
rs.next();
int n_f = rs.getInt("NUMERO_DE_FILAS");
int i = rs.getInt("IDEMP");
int c = rs.getInt("CONTRASENA");
String n = rs.getString("NOMBRE");
System.out.println(i + " " + c + " " + n + " " + n_f);
Me da el siguiente error:
StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
javax.servlet.ServletException: ORA-01008: no todas las variables han sido transferidas.
    String sql = "SELECT COUNT(IDEMP) AS NUMERO_DE_FILAS, IDEMP, CONTRASENA, NOMBRE FROM EMPLEADOS WHERE CONTRASENA = ? AND NOMBRE = ? GROUP BY CONTRASENA, NOMBRE, IDEMP";
PreparedStatement ps = conex.prepareStatement(sql);
ps.setInt(1, contra);
ps.setString(2, login);
System.out.println(sql);
ResultSet rs = ps.executeQuery(sql);
rs.next();
int n_f = rs.getInt("NUMERO_DE_FILAS");
int i = rs.getInt("IDEMP");
int c = rs.getInt("CONTRASENA");
String n = rs.getString("NOMBRE");
System.out.println(i + " " + c + " " + n + " " + n_f);
Me da el siguiente error:
StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
javax.servlet.ServletException: ORA-01008: no todas las variables han sido transferidas.
		    las interrogaciones van entre parentesis.
Por lo demás ten cuidado con las comillas, tanto simples como dobles.
Lo digo porque si nombre y contrasena son varchar hay que compararlo tal que asi:
String sql = "SELECT COUNT(IDEMP) AS NUMERO_DE_FILAS, IDEMP, CONTRASENA, NOMBRE FROM EMPLEADOS WHERE CONTRASENA = '(?)' AND NOMBRE = '(?)' GROUP BY CONTRASENA, NOMBRE, IDEMP";
PreparedStatement ps = conex.prepareStatement(sql);
ps.setInt(1, contra);
ps.setString(2, login);
System.out.println(sql);
ResultSet rs = ps.executeQuery(sql);
rs.next();
int n_f = rs.getInt("NUMERO_DE_FILAS");
int i = rs.getInt("IDEMP");
int c = rs.getInt("CONTRASENA");
String n = rs.getString("NOMBRE");
System.out.println(i + " " + c + " " + n + " " + n_f);
	    
    Por lo demás ten cuidado con las comillas, tanto simples como dobles.
Lo digo porque si nombre y contrasena son varchar hay que compararlo tal que asi:
String sql = "SELECT COUNT(IDEMP) AS NUMERO_DE_FILAS, IDEMP, CONTRASENA, NOMBRE FROM EMPLEADOS WHERE CONTRASENA = '(?)' AND NOMBRE = '(?)' GROUP BY CONTRASENA, NOMBRE, IDEMP";
PreparedStatement ps = conex.prepareStatement(sql);
ps.setInt(1, contra);
ps.setString(2, login);
System.out.println(sql);
ResultSet rs = ps.executeQuery(sql);
rs.next();
int n_f = rs.getInt("NUMERO_DE_FILAS");
int i = rs.getInt("IDEMP");
int c = rs.getInt("CONTRASENA");
String n = rs.getString("NOMBRE");
System.out.println(i + " " + c + " " + n + " " + n_f);
