style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Procedimientos Almacenados MySQL en Java

Hola, soy nueva en esto de programar en Java y además soy nueva en este foro. Estoy haciendo una aplicación Web, en Netbeans 6.8, hice procedimiento almacenado en MySQ, pero no se como mandarlo llamar en un método para validar al usuario, tengo dos clases la de depto y la de responsables, que son mis dos tablas. En un Servlet mando llamar a este método pero no me sale, alguien podría darme una sugerencia. Gracias. Este es el código.

public ArrayList Validar(String usuario, String contrasena) {
try {
conectar();
ArrayList ListResp = new ArrayList();
String query = "{CALL sp_validar(?,?)}";
calstmt = conn.prepareCall(query);
usuario="'" + usuario + "'";
contrasena="'" + contrasena + "'";
calstmt.setString(5, usuario);
calstmt.setString(6, contrasena);
calstmt.executeQuery();
rs = calstmt.executeQuery();
rs = (ResultSet) calstmt.getObject(1);
while (rs.next()) {

ListResp.add(new depto(rs.getString(1), rs.getString(2), rs.getInt(3)));
ListResp.add(new responsables(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6)));

}
return ListResp;

} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}

SERVLET

ArrayList ListResp = con.Validar(usuario, contrasena);
Iterator i = ListResp.iterator();

if (i.hasNext()) {

depto d= (depto) i.next();
responsables r=(responsables) i.next();

out.println(d.getDepto());
out.println(r.getNombre());

PROCEDIMIENTO ALMACENADO

create procedure sp_validar(in usuario varchar(25),in contrasena varchar(25))
begin
select d.depto, r.nombre from depto d inner join responsable r on d.id_depto=r.id_depto where r.usuario=usuario and r.contrasena=contrasena
end;

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de beto.bateria

Hola while (rs.next())

Hola

while (rs.next()) {

ListResp.add(new depto(rs.getString(1), rs.getString(2), rs.getInt(3)));
ListResp.add(new responsables(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6)));
}

tienes 2 rs.getString(1)

te recomiendo que pongas el error que te manda

rs = (ResultSet) calstmt.getObject(1);

y esto esta muy redundante

calstmt.executeQuery();
rs = calstmt.executeQuery();
rs = (ResultSet) calstmt.getObject(1);

te aconsejaria que te vuelvas a replantear el problema y que investiges bien en internet.

Gracias

Ok, gracias por tu comentario y si tienes razón es redundante, y no me manda ningún error simplemente no me muestra los datos que tengo en la BD.

Imagen de beto.bateria

Este codigo es de sqlServer,

Este codigo es de sqlServer, es mu parecido, debes de considerar que conn es una clase instanciada de java.sql.Connection:

        CallableStatement cstmt = conn.prepareCall("{call dbo.agentecliente(?)}");
        cstmt.setString(1, action.getSearch());
         ResultSet resultSet = cstmt.executeQuery();

Te puede ayudar mucho a organizar tu codigo.

Ok, lo checo y te aviso que

Ok, lo checo y te aviso que pasa. Gracias

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">