¿Cómo solucionar el error javax.servlet.servletException= "Exhausted Resulset" en JSP?

Javax.servlet.servletException=
"Exhausted Resulset"

1 Respuesta

Respuesta
1
Los motivos por el cual te devuelve el error es porque estas trabajandpo con una conexión a la base de datos, y en la consulta o acción que estas realizando contra ella estas intentando acceder a un registro que no existe, o bien el recordset es demasiado grande y tu sistema no puede manejarlo.
Dos registros.
No puede ser por algún motivo más.
Te paso el código:
<%@ page import="java.lang.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="oracle.jdbc.driver.*" %>
<%@ page import="oracle.portal.provider.v1.*" %>
<%@ page import="oracle.portal.provider.v1.http.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%
{
new OracleDriver();
Connection c = DriverManager.getConnection("jdbc:oracle:thin:@ntserver_2:1521:portal","intranet","intranet");
Statement s = c.createStatement();
// var nombre;
// var apellidos;
String vNombre = request.getParameter("Nombre");
String vApellidos = request.getParameter("Apellidos");
String vEmail = request.getParameter("Email");
String vFechadesde = request.getParameter("Fechadesde");
String vFechahasta = request.getParameter("Fechahasta");
String vTotaldias = request.getParameter("Totaldias");
//Verificamos si existe este usuario
String query1="select usu_id,usu_dpt_id from usuario where usu_nombre='"+vNombre+"'"+"and usu_email='"+vEmail+"'";
ResultSet res =s.executeQuery(query1);
res.next();
int usuid = res.getInt("usu_id");
int usudptid = res.getInt("usu_dpt_id");
//Obtenemos el jefe del departamento para enviarle un email
//Creo que falta un campo en la tabla correspondiente al identificador de jefe
String query3="select usu_email from usuario where usu_dpt_id ="+usudptid+" and usu_id=(select usu_mgr from usuario where usu_nombre ='"+vNombre+"')";
ResultSet res3 =s.executeQuery(query3);
res3.next();
String usuemail = res3.getString("usu_email");
%>
<%= mandarMail(usuemail,"Convocatoria de Vacaciones", "El empleado "+vNombre+"hace una solicitud de vacaciones") %>
<%
//Obtenemos el ID de vacaciones
String query2="select to_number(nvl(max(VAC_ID),0)+1) Id from vacaciones";
ResultSet res2= s.executeQuery(query2);
res2.next();
int id = res2.getInt("Id");
String insert = "insert into vacaciones(vac_id,vac_finicio,vac_ffin,vac_numdias,vac_usu_id) values ("+id+","+"to_date('"+vFechadesde+"','dd-mm-yyyy')"+","+ "to_date('"+vFechahasta+"','dd-mm-yyyy')";
insert = insert + "," +vTotaldias + ","+usuid+")";
//out.print(insert);
int stmtInt = s.executeUpdate(insert);
c.close();
s.close();
res.close();
res2.close();
}
%>
<%!
private String mandarMail(String to, String Subject, String text)
{
Properties props = new Properties ();
props.put("mail.smtp.host", "infisa-ca.com");
Session sendMailSession = Session.getInstance(props);
Message newMessage = new MimeMessage(sendMailSession);
try
{
String from = "[email protected]";
InternetAddress fromAddress = new InternetAddress(from);
newMessage.setFrom(fromAddress);
//String to = request.getParameter("to");
InternetAddress toAddress = new InternetAddress(to);
newMessage.addRecipient(Message.RecipientType.TO, toAddress);
//String subject = request.getParameter("subject");
newMessage.setSubject(subject);
//String text = request.getParameter("text");
newMessage.setText(text);
Transport.send(newMessage);
}
catch (AddressException eAdr)
{
//Fallo en el parser de la direccion
}
catch (MessagingException eMes)
{
//Fallo del setFrom
}
String retString = "Mensaje enviado a: " + to;
return retString;
}
%>
Un saludo y gracias.
Entonces, si solo tienes dos registros, te diría que comprobasese que todas las veces que accedes a los valores en el recordset, no estés intentando acceder a un registro que no existe.
El código parece que esta bien, pero tendría que analizarlo en profundidad para ver como arreglarlo.
Nada más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas