Problema con formularios y conexión a base de datos oracle en proyecto JSP

Tengo un problemilla con mi proyecto en JSP!. Seguro que es una chorrada pero me esta volviendo loca!.
Tengo un formulario que recoge de los usuarios el login y la password. Este formulario en el action, envía la información a una página jsp, que a través de una bd en oracle, comprueba si el usuario existe en el tutorial.
El problema es, si yo introduzco en el formulario números, en login principalmente, lo comprueba perfectamente y no da ningún tipo de error. Pero si introduzco, letras peta! Danto un error:
java. Lang. NullPointerException.
Debe ser una tontería, pero no consigo saber que es lo que pasa!
Espero que puedas saber que es lo que me ocurre!

1 Respuesta

Respuesta
1
Sería de gran ayuda si me copiaras el fragmento de código donde recoges los datos que te lleguen del formulario y la query y la comprobación. No sé si usas un bean para guardar los datos, o cómo lo haces.
De una forma muy simple tienes un ejemplo en:
http://developer.novell.com/ndk/doc/samplecode/ldapjdbc_sample/ldapjdbc_sample/QueryPortal.htm.html
Bueno, ya me contarás.
El formulario que recoge los datos de los usuarios es:
<form name="comenzar" method="post" action="/webapp/kika/pfc/tutor/comp_usuario.jsp">
<center>
<table border=0><tr valign="middle"><tr>
<td>
<center><A href="http://www.uc3m.es"><IMG BORDER=0 SRC="comunes/logoCarlos.gif" width=90
high=90 ALT="Univ. Carlos III"></a></center></td>
<td width=10></td>
<td>
<CENTER><table border=2 background="./comunes/fondoizq.jpg" cellpadding=18>
<tr height=50><td><font size=3><I class="rojo">Identificación de
Usuarios:</I></font><br><center>
<table border=0><tr valing="middle"><tr>
<td><td width=25 rowspan=1></td>
<td width=240 valing="middle" rowspan=1><font size=2><B><I class="acceso">Login:</I></font></B></td>
<td width=190 valing="middle" rowspan=1>
<input type="text" name="login" maxlength="10"></td>
</tr>
<tr>
<td><td width=25 rowspan=1></td>
<td width=240 valing="middle" rowspan=1><font size=2><B><I
class="acceso">Password:</I></font></B></td>
<td width=190 valing="middle" rowspan=1><input type="password" name="password" maxlength="8"></td>
</tr>
</td></tr>
</table>
<table><tr><td></td></tr></table>
<table border=0><tr valing="middle"><td>
<td width=75 valing="middle" rowspan=1><INPUT TYPE=Button VALUE=" Nuevos Usuarios "
onclick="document.location='./nuevos_usuarios.jsp'"><br></td>
<td width=230 rowspan=1></td>
<td width=75 valing="middle" rowspan=1>
<INPUT TYPE="reset" NAME="Limpiar" VALUE=" Limpiar "><br></td>
<td width=10 rowspan=1></td>
<td width=75 valing="middle" rowspan=1>
<INPUT TYPE="button" NAME="Entrar" VALUE=" Comenzar " onclick="comprobar_usuario();"><br></td>
</tr></table></center>
</TR> </TABLE></center></tr></td></CENTER>
donde comprobar_usuario, comprueba que la celda (login_us) no este vacia.
Si se cumple esto, pasa con el submit al archivo comp_usuario.jsp
En el que a través de una consulta a la base de datos, trato de saber si esta dado de alta o no.
<%! String sql,login_us,password_us; %>
<%
login_us=request.getParameter("login");
if (login_us == null)
{
%>
<% // Se accede a esta pagina con el campo login_us a nulo.
%>
<script>
window.document.location="./acceso.jsp";
</script>
<%
}
else {
sql="SELECT * FROM "+administrador+"ESTUDIANTE WHERE login = "+ login_us;
r=res.consulta(conn,sql);
if (r.next ())
{
%>
<% // CODIGO HTML DENTRO DEL CUERPO DE JSP
// SOLO SE EJECUTA SI EL USUARIO ESTA DADO
// DE ALTA.
// El usuario que intenta acceder al tutorial
// existe en la Base de Datos.
%>
<%
}
else {
%>
<% // CODIGO HTML DENTRO DEL CUERPO DE JSP
// SOLO SE EJECUTA SI EL USUARIO NO ESTA DADO
// DE ALTA.
// El usuario que intenta acceder al tutorial
// no existe en la Base de Datos.
%>
<script>
window.document.location="./acceso.jsp";
alert("Usuario no encontrado. Intentelo de nuevo o dese de alta como nuevo usuario.");
</script>
<%
}
r.close();
}
%>
Si el usuario existe accederá al tutorial y si no existe, regresara a la página de acceso, donde se recogen los datos de los usuarios.
Yo creo! Que el problema esta en la consulta de la base de datos, lo raro es que con números no falla!.
Ya no se como solucionarlo, así que espero que esto que te mando te sirva para meterme un buen rapapolvos y me digas donde me he equivocado.
De todas formas, gracias por tu ayuda.
Mónica.
sql="SELECT * FROM "+administrador+"ESTUDIANTE WHERE login = '"+ login_us + "'";
A ver si así te funciona.
Para la BBDD en estos casos es bueno usar un pool de conexiones a bbdd, ya que las páginas van a hacer muchas consultas y no es bueno conectar y desconectar cada vez.
http://developer.java.sun.com/developer/Books/JDBCTutorial/index.html
El error que daba en comp_usuario desaparece, desplazándolo al siguiente archivo jsp, en el que se utiliza la bd.
He hecho lo mismo, con todas las consultas a la bd, pero sigue dando el mismo error.
java.lang.NullPointerException
at oracle.jdbc.driver.ScrollableResultSet.cacheRowAt(ScrollableResultSet.java, Compiled Code)
at oracle.jdbc.driver.ScrollableResultSet.isValidRow(ScrollableResultSet.java, Compiled Code)
at oracle.jdbc.driver.ScrollableResultSet.next(ScrollableResultSet.java, Compiled Code)
at oracle.jdbc.driver.SensitiveScrollableResultSet.next(SensitiveScrollableResultSet.java, Compiled Code)
at _webapp._kika._pfc._tutor._contenido._jspService(_contenido.java, Compiled Code)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java, Compiled Code)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java, Compiled Code)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java, Compiled Code)
at oracle.jsp.JspServlet.internalService(JspServlet.java, Compiled Code)
at oracle.jsp.JspServlet.service(JspServlet.java, Compiled Code)
at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java, Compiled Code)
at org.apache.jserv.JServConnection.run(JServConnection.java, Compiled Code)
at java.lang.Thread.run(Thread.java, Compiled Code)
Siento darte la barrila, pero me estoy volviendo loca.
Gracias,
Mónica.
He estado sin internet, por eso he tardado un tanto más (además de perder la respuesta anterior) :)
No sé bien por qué te pasa eso, pásame el código y si eso lo intento ver (hace tiempo que no trasteo con JDBC de todos modos). Si quieres por aquí, o por email [email protected]
Tampoco sé muy bien ´qué es administrador en la consulta sql, ni res ni conn.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas