Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con NullPointerException

Estas en el tema de Ayuda con NullPointerException en el foro de Java en Foros del Web. Hola a todos, les explico lo que quiero hacer: Tengo un formulario que envia datos al servlet Recibos.java, todos son tipo cadena, y ya en ...
  #1 (permalink)  
Antiguo 22/04/2008, 21:17
Avatar de PPLPU  
Fecha de Ingreso: marzo-2008
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Ayuda con NullPointerException

Hola a todos, les explico lo que quiero hacer:
Tengo un formulario que envia datos al servlet Recibos.java, todos son tipo cadena, y ya en el servlet me conecto a la bd (que esta hecha en sql server 7), por medio de un puente con odbc, imprime que ya los recibió, y los almacena en la bd (no todos), dependiendo si son ingresos o egresos (por medio de un radio en html checo de que tipo es, si es egreso o ingreso) se almacenan los datos en la tabla correspondiente.
Las tablas de la bd son: alumnos, ingresos, egresos; donde todos los campos tambien son cadenas, incluyendo el idrecibos (varchar (5)) que es la primary key de las 2 tablas. Entonces para crear el idrecibos que es cadena, primero leo el ResultSet de un SELECT * FROM INGRESOS con un while, y se va incrementando un contador. Ese contador tendra al finalizar el ciclo el No. de registros de la tabla, asi que lo incremento una vez mas, y lo convierto a String con Integer.toString(reg); No se donde esta el error, si en la conversion o algo que tenga que ver con el ResultSet, pero espero que me puedan ayudar.
El error que me sale aqui se los muestro:

http://img99.imageshack.us/img99/4818/pantalla1hj8.png
(disqlpen pero me dejarán poner links hasta que tenga + de 30 mensajes )

y aqui esta el codigo del servlet:

Cita:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;


public class Recibos extends HttpServlet
{
Connection conexion;
Statement sentencia;
int reg;

public void doPost (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException, NumberFormatException
{

PrintWriter out;
int con2=0,conV2=0;
response.setContentType("text/html");
out = response.getWriter();
String ap=null,am=null,nombre=null,grado=null,gpo=null;
String concep=null,cant=null,cantl=null,turno=null,fecha= null,dir=null;
String ingresos=null,egresos=null;
ap=request.getParameter("ap");
am=request.getParameter("am");
nombre=request.getParameter("nombre");
grado=request.getParameter("grado");
gpo=request.getParameter("gpo");
concep=request.getParameter("concep");
cant=request.getParameter("cant");
cantl=request.getParameter("cantl");
turno=request.getParameter("turno");
fecha=request.getParameter("fecha");
dir=request.getParameter("dir");
ingresos=request.getParameter("ingresos");
egresos=request.getParameter("egresos");


out.print("<html>");
out.print("<title>");
out.print("Generador de recibos y Reportes del CETis No. 99");
out.print("</title>");
out.print("<body>");
out.print("<center>");

out.print("<hr><b>Los siguientes datos fueron enviados a impresora <br>");
out.print(" y almacenados en la Base de Datos:</b><br><br>");
out.print("<table><tr><td><b>Apellido Paterno: </b></td><td>"+ap+"</td></tr>");
out.print("<tr><td><b>Apellido Materno: </b></td><td>"+am+"</td></tr>");
out.print("<tr><td><b>Nombre(s): </b></td><td>"+nombre+"</td></tr>");
out.print("<tr><td><b>Grado: </b></td><td>"+grado+"</td></tr>");
out.print("<tr><td><b>Grupo: </b></td><td>"+gpo+"</td></tr>");
out.print("<tr><td><b>Concepto: </b></td><td>"+concep+"</td></tr>");
out.print("<tr><td><b>Cantidad (numero): </b></td><td>"+cant+"</td></tr>");
out.print("<tr><td><b>Cantidad (letra): </b></td><td>"+cantl+"</td></tr>");
out.print("<tr><td><b>Turno: </b></td><td>"+turno+"</td></tr>");
out.print("<tr><td><b>Fecha: </b></td><td>"+fecha+"</td></tr>");
out.print("<tr><td><b>Direccion: </b></td><td>"+dir+"</td></tr>");

// Se carga el driver JDBC-ODBC y la conexion:::::::::::::::::::::::::::: ;D


try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:cetis99","" ,"");
Statement st = con.createStatement();

if(ingresos!=null)
{
out.print("<tr><td><b>Ingresos: </b></td><td>"+"SI"+"</td></tr>");
ResultSet r=sentencia.executeQuery("select * from ingresos");
reg=0;
//CONTAR REGISTROS INGRESOS
while(r.next())
{
reg++;
}
reg++;
String idrecibos=null;
idrecibos=Integer.toString(reg);
st.executeUpdate("insert into ingresos values('"+idrecibos+"','"+ap+"','"+am+"','"+nombre +"','"+fecha+"','"+concep+"','"+cant+"')");
r.close();
} //Cerramos If
//================================================== ============

if(egresos!=null)
{
ResultSet r=sentencia.executeQuery("select * from egresos");
reg=0;
//CONTAR REGISTROS EGRESOS
while(r.next())
{
reg++;
}
reg++;
String idrecibos=null;
idrecibos=Integer.toString(reg);
out.print("<tr><td><b>Egresos: </b></td><td>"+"SI"+"</td></tr>");
st.executeUpdate("insert into egresos values('"+idrecibos+"','"+ap+"','"+am+"','"+nombre +"','"+fecha+"','"+concep+"','"+cant+"')");
r.close();
} //Cerramos If

st.close();
con.close();
}//try
catch (Exception e) {
out.println("Error VMD: " + e);
}//catch
out.print("</table>");
out.print("<br>");

out.print("<a href='http://localhost:8080/Generador/genrecibo.html'>Recibos</a href><br><br>");
out.print("<a href='http://localhost:8080/Generador/Principal>Menu</a href><br><br>");
out.print("<br><br><br><hr><font color=gray>");
out.print("<small>Centro de Estudios Tecnológicos Industrial y de servicios No. 99.<br>");
out.print("Yautepec, Mor.</small>");
out.print("</font>");
out.print("</center>");
out.print("</body>");
out.print("</html>");
out.close();
}

public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException, NumberFormatException
{
doPost(request, response);
}
}


Espero que me den una orientacion de como evitar este error, y muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 23/04/2008, 07:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Re: Ayuda con NullPointerException

Ese error lo da java cuando encuentra un nulo en una variable que no deberia ser nula, pero es dificil de saber qual es con la info que nos das, no tenenoms tu bbdd y el nulo puede venir por una mala referenciación de la variable o porque obtiene un nulo de la bbdd.

Debuga el codigo, crea un metodo main como si no furea un servlet y podras debugar. Des de el main haces peticiones a las funciones del servlet... hasta que encuentres el nulo. Usas eclipse...?

Quim
  #3 (permalink)  
Antiguo 23/04/2008, 11:26
Avatar de PPLPU  
Fecha de Ingreso: marzo-2008
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Ayuda con NullPointerException

Hola quimfv, si, ya he hecho uno con main, y lo corre bien, inserta, consulta y todo bien, lo que no se es por qué me marcará error aqui ya con el servlet.
por cierto no estoy usando eclipse, solo ocupo el JCreator o NETBeans y la herramienta del sql (analizador de consultas)... aqui dejo el codigo de cuando hice la bd:

Cita:
create database cetis99;
create table alumnos(matricula varchar(14) primary key,ap varchar (35),am varchar(35),nombre varchar(35));

create table egresos(idrecibo varchar (5) primary key ,eap varchar(35), eam varchar (35), enombre varchar (35), efecha varchar (8), econcep varchar (4), ecant varchar(5));

create table ingresos(idrecibo varchar (5) primary key ,iap varchar(35), iam varchar (35), inombre varchar (35), ifecha varchar (8), iconcep varchar (4), icant varchar(5));
Ambas tienen actualmente 2 registros nada mas:

Cita:
insert into egresos values('1','MARTINEZ','BAZALDUA','PEDRO','21/04/08','B001','500')
insert into egresos values('2','MARTINEZ','DURAN','LAURA','21/04/08','B001','500')

insert into ingresos values('1','MORENO','JIMENEZ','ANTONIO','22/04/08','B001','500')
insert into ingresos values('2','MARIN','HERNANDEZ','DIANA','22/04/08','B001','500')
Gracias por ayudar
  #4 (permalink)  
Antiguo 24/04/2008, 09:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Re: Ayuda con NullPointerException

Lo siento, pesaba que si, pero no tengo el entorno de trabajo instalado para trabajar con J2EE.

Quim
  #5 (permalink)  
Antiguo 24/04/2008, 09:49
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Ayuda con NullPointerException

busca la linea donde te sale el error. La manera mas sencilla: e.getStackTrace(). Esto te generara en la consola del servidor la traza para poder saber la linea donde falla.

Como recomendacion te dria q no juntases todo en un servlet, eso que has puesto es una chapuza como forma de programacion, nada reutilizable, y con un moton de codigo replicado que hara q cualquier cambio necesites cambiar un monton de cosas en lugar de tener todo centralizado.

Hay q separar el area de negocio del area de presentacion siempre. Para mostrar html usa las jsp, los servlets usalos como intermediarios entre la logica de negocio y la de presentacion y utiliza EJBs para la logica de negocio.
  #6 (permalink)  
Antiguo 24/04/2008, 18:32
Avatar de PPLPU  
Fecha de Ingreso: marzo-2008
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
De acuerdo Re: Ayuda con NullPointerException

Muchas gracias quimfv y sanmi69, por ayudar.

Es cierto que esta todo amontonado en ese servlet, gracias x la recomendación, que crees, que un profe me dijo lo mismo , y que es mejor trabajar con objetos y funciones para hacer reutilizable el código y claro, más ordenado , por lo que empezaré desde 0, para tratar de evitar ese error.

Gracias por el tip de e.getStackTrace(), lo voy a usar, y luego les qento va? Espero solucionarlo pronto. Muchas gracias otra vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:02.