Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2012, 10:16
nomarlegnar
 
Fecha de Ingreso: agosto-2012
Ubicación: Agüitas Ranch
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 0
DELETE en JSP usando DAO DTO y MySQL

Saludos foro, actualmente me encuentro desarrollando en JSP con patrones de diseño DAO DTO y tengo un problema para hacer el pase de parametros del .jsp al dto y posteriormente al dao para poder eliminarlos... la situación es la siguiente...

Tengo un .jsp que abre en tomcat, el cual consiste en una tabla que va mostrando los registros que tengo en una tabla de mi base de datos, agregando al lado derecho un boton de eliminar y otro de modificar para cada registro, de la siguiente forma.

[URL="https://lh3.googleusercontent.com/-OLyvf3blYnI/UI_pzswNk0I/AAAAAAAAAQw/ioY1Uk5UoKw/w497-h373/pantalla.png"]https://lh3.googleusercontent.com/-OLyvf3blYnI/UI_pzswNk0I/AAAAAAAAAQw/ioY1Uk5UoKw/w497-h373/pantalla.png[/URL]

Cuando doy clic en el boton de mas me abre un formulario en el cual puedo agregar mas registros y esto funciona perfectamente, el problema esta en cuando quiero eliminar uno de los registros, el codigo es el siguiente...

Código PHP:
------------------index.jsp--------------------

//aqui para cada elemento de la lista de alumnoBean
//los escribe en la tabla descrita anteriormente

<c:forEach items="${alumnoBean.listaAlumnos}" var="alumnos">
                    <
tr>
                        <
td>
                            ${
alumnos.idalumno}
                        </
td>
                        <
td>
                            ${
alumnos.nombre}
                        </
td>
                        <
td>
                            ${
alumnos.apaterno}
                        </
td>
                        <
td>
                            ${
alumnos.amaterno}
                        </
td>
                        
                        <
td>

            
//////AQUI ES DONDE CREO QUE ESTA EL ERROR
            //es el boton de eliminar

                        
<h:commandLink action="#{alumnoBean.delete()}"
                            <
img src="/Evaluacion/faces/recursos/imagenes/delete.gif" alt="Borrar" height="25" width="25" title="Borrar"/>
                        </
h:commandLink>

            
//////////////////////////////////////////////////////////////////
                
                            
<img src="/Evaluacion/faces/recursos/imagenes/update.gif" alt="Actualizar" height="25" width="25" title="Actualizar"/>
                       </
td>
                     </
tr>
 <
c:forEach>



---------------------------------
AlumnoDTO--------------

    public 
String selectAll(){ // llena la tabla
        
listaAlumnos=new AlumnosDAO().selectAll();
        return 
"/alumnosIndex";
    }
    
    public 
String insert(){ // inserta registros
        
AlumnosDAO alumnodao=new AlumnosDAO();
        
alumnodao.insert(this);
        
selectAll();
        return 
"/alumnosIndex";
        
//Evaluacion/faces/recursos/imagenes/delete.gif
        
    
}
    
    public 
String delete(){ // se supone que deberia eliminar
       
            
AlumnosDAO alumnodao=new AlumnosDAO();
            
alumnodao.deleteById(this);
            
selectAll();
        return 
"/alumnosIndex"
        
    }





-------------------------------
AlumnoDAO-------------------
///////SELECT 

    
public List<IBaseDTOselectAll(){ //llena la lista
        
ArrayList<IBaseDTOarreglo=new ArrayList<IBaseDTO>();
        
AlumnosDTO alumno null;
        
Connection con null;
        
PreparedStatement ps null;
        
ResultSet rs=null;
       
        try{
            
con=ConexionDAO.createConnection();
            
ps=con.prepareStatement(SQL.selectAlumno);
            
rs=ps.executeQuery();
            while(
rs.next()){
                
alumno= new AlumnosDTO();
                
alumno.setIdalumno(rs.getInt("IDALUMNO"));
                
alumno.setNombre(rs.getString("NOMBRE"));
                
alumno.setApaterno(rs.getString("APATERNO"));
                
alumno.setAmaterno(rs.getString("AMATERNO"));
                
arreglo.add(alumno);
                
//arreglo.add(alumno);   
            
}
        }catch(
Exception ex){
            
ex.printStackTrace();
        }
        
finally{
            
ConexionDAO.closeConnection(conpsrs);
        }
        return 
arreglo;
    }




/////////INSERT

    
public int insert(IBaseDTO alumnodao){ //inserta los registros del formulario a la lista
        
Connection conn=null;
        
PreparedStatement ps null;
        
AlumnosDTO alumnonull;
        
int exito=0;
        
        try {
            
conn=ConexionDAO.createConnection();
            
ps=conn.prepareStatement(SQL.insertAlumno);
            
alumno=(AlumnosDTO)alumnodao;
           
            
ps.setInt(1,alumno.getIdalumno());
            
ps.setString(2,alumno.getNombre());
            
ps.setString(3,alumno.getApaterno());
            
ps.setString(4,alumno.getAmaterno());
            
exito=ps.executeUpdate();
            
            if (
exito==1) {
                
System.out.println("Alumno Insertado");
            }else{
                
System.out.println("Alumno no Insertado");
            }
        } 
        catch (
Exception e) {
            
e.printStackTrace();
        }
        
finally{
            
ConexionDAO.closeConnection(conn,ps);
        }
        return 
exito;
    }



////////DELETE 
    
    
public int deleteById(IBaseDTO alumnodto){ //debería eliminar el registro seleccionado en la tabla
        
        
Connection con =null;
        
PreparedStatement ps=null;
        
AlumnosDTO alumno=null;
        
int exito=0;
       
//System.out.println("Alumno ID "+alumno.idalumno.toString());
        
        
try {
            
            
con=ConexionDAO.createConnection();
            
ps=con.prepareStatement(SQL.deleteAlumno);
            
alumno=(AlumnosDTO)alumnodto;
            
            
ps.setInt(1,alumno.getIdalumno());
            
            
exito=ps.executeUpdate();
            
             if (
exito==1) {
                
System.out.println("Alumno Eliminado");
            }else{
                
System.out.println("Alumno no Eliminado");
            }
        } catch (
Exception e) {
            
e.printStackTrace();
            
System.out.println(e.toString());
         
        }
        
finally{
            
ConexionDAO.closeConnection(con,ps);
        }
        return 
exito;
        
    }


-------- 
SQL--------
//consultas para insertar, seleccionar todo y eliminar registros


public class SQL {
    
    
//Alumnos
    
public static String selectAlumno="SELECT IDALUMNO,NOMBRE,APATERNO,AMATERNO FROM ALUMNOS";
    public static 
String insertAlumno="INSERT INTO ALUMNOS (IDALUMNO,NOMBRE,APATERNO,AMATERNO)VALUES(?,?,?,?)";
    public static 
String deleteAlumno="DELETE FROM ALUMNOS WHERE IDALUMNO=?";
    public static 
String updateAlumno="UPDATE ALUMNOS SET NOMBRE=?,APATERNO=?,AMATERNO=? WHERE IDALUMNO=?"
el error que me arroja en consola es el siguiente


java.lang.NullPointerException
at DAO.AlumnosDAO.deleteById(AlumnosDAO.java:98)
at DTO.AlumnosDTO.delete(AlumnosDTO.java:135)

según eh investigado estoy pasando un valor nulo como parametro a esos 2 métodos, mas quiero enviarle el id del alumno al momento de dar click en el botón de elilminar.

Los códigos obviamente no están completos, solo son los fragmentos para no poner todo (nombre de paquete, etc...)

Agradecería cualquier punto de vista pues ya tengo atorado con esto 2 dias