Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Ayuda con NullPointerException (http://www.forosdelweb.com/f45/ayuda-con-nullpointerexception-578938/)

PPLPU 22/04/2008 21:17

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 :si:)

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 :-)

quimfv 23/04/2008 07:01

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

PPLPU 23/04/2008 11:26

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 :si:

quimfv 24/04/2008 09:15

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

Quim

sanmi69 24/04/2008 09:49

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.

PPLPU 24/04/2008 18:32

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 :si:


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.