Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/02/2015, 02:17
spybroke
 
Fecha de Ingreso: octubre-2014
Mensajes: 16
Antigüedad: 9 años, 6 meses
Puntos: 0
Problemas al salvar un Array en una BD JDBC

Hola a todos,

estoy haciendo un ejercicio tonto que seria una especie de programa para controlar altar y bajas de una academia (alumnos y cursos)

Existen X cursos ya creados y se pueden seleccionar en un combobox y segun lo que selecciones, muestra en un jList los alumnos que hay en ese curso, permite editar sus datos, etc...

Tengo el codigo ya acabado y el programa funciona perfecto salvo un detalle que me esta volviendo loco.

El programa tiene que poder cargar y salvar los datos tanto de un fichero (xml) como de una BD con JDBC... pero no se pueden tener las dos formas a la vez (lo que solucione con un if/else y un simple booleano)

La parte de cargar y guardar datos a un fichero xml funciona perfecto, pero me da problemas la parte de la BD, concretamente el salvar los datos (el cargarlos tambien me funciona bien)

Ahora os pondre los codigos, pero basicamente, el programa manda un arraylist de alumnos al metodo, el cual conecta con la BD y, por medio de un bucle for, va creando filas en la BD con los datos de cada alumno.

El codigo del metodo es este:

Código Java:
Ver original
  1. public void setAlumnos(List<Alumno> lista) {
  2.         try (Connection conn = this.getConexion()) {
  3.             String sqlAlumnos = "INSERT INTO ALUMNOS (DNI, NOMBRE, APELLIDO, FECHA) VALUES (?, ?, ?, ?)";
  4.             PreparedStatement com = conn.prepareStatement(sqlAlumnos);
  5.            
  6.               /*
  7.              Antes del codigo de guardado, deberiamos de comprobar si existe la BD y en caso afirmativo, vaciarla primero.
  8.              if () {
  9.  
  10.              }
  11.              */
  12.             for (Alumno alumno : lista) {
  13.                 com.setString(1, alumno.getDniAlumno());
  14.                 com.setString(2, alumno.getNombreAlumno());
  15.                 com.setString(3, alumno.getApellidoAlumno());
  16.                 com.setDate(4, (Date) alumno.getFechaMatriculacion());
  17.                 com.executeUpdate();
  18.                 com.close();
  19.             JOptionPane.showMessageDialog(null, "Datos cargados correctamente.");
  20.             }
  21.  
  22.         } catch (Exception ex) {
  23.             JOptionPane.showMessageDialog(null, "No se han podido guardar los datos.");
  24.         }
  25.     }

EL fallo es que siempre entra en catch. He podido comprobar que el codigo llega correctamente hasta el com.executeUpdate(); ya que si comento esa parte y justo antes hago un System.out del alumno, me lo muestra correctamente.

Los datos de la BD, conexion y demas funciona bien ya que el metodo que carga los datos a un ArrayList si que funciona bien.

Alguien sabe que puedo estar haciendo mal?

Ademas, como veis tengo un if comentado, ya que hay quiero meter un codigo que detecte si hay alguna fila en la tabla y de ser asi, limpie la tabla entera pero aun estoy con ello xD