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

solo quiero guardar los registros a los que hice cambios ¿como hago?

Estas en el tema de solo quiero guardar los registros a los que hice cambios ¿como hago? en el foro de Java en Foros del Web. Hola a todos, les escribo para pedir consejo. Estoy trabajando con una aplicacion que maneja muchos registros. Les comento un poco el funcionamiento para que ...
  #1 (permalink)  
Antiguo 11/04/2012, 07:18
 
Fecha de Ingreso: diciembre-2009
Mensajes: 115
Antigüedad: 14 años, 4 meses
Puntos: 0
solo quiero guardar los registros a los que hice cambios ¿como hago?

Hola a todos, les escribo para pedir consejo.
Estoy trabajando con una aplicacion que maneja muchos registros.
Les comento un poco el funcionamiento para que entiendan. Al abrir el jFrame se llena una jTable con los datos extridos de la DB, supongamos que se llena con 100 registros (es solo un ejemplo), y modifico los datos de unos cuantos registros de esta. Lo que actualmente hago es, al momento de guardar, un UPDATE que me actualiza todo lo que hay en la DB (osea, actualizo todo en la DB, incluso los registros que no sufrieron cambios); claro esta que esto no se nota para el usuario, pero si a nivel interno ya que no es eficiente.
¿Les pregunto, es posible solo guardar aquellos registros que cambiaron?
Habia pensado, que tal vez sea posible, en crear una copia de los datos de la consulta en memoria y compararla con la tabla que hice los cambios para estableser cuales fueron los que sufrieron cambio, pero no se si es posible algo asi (esto es una idea, ya que ni me plantee como programarlo ), o si hay alguna forma mas sencilla que esta idea.
Como se daran cuenta estoy aprendiendo y no conozco las posibilidades que puedo tener.
Les agradezco el tiempo de lectura, es invaluable para mi su interés.
  #2 (permalink)  
Antiguo 11/04/2012, 07:26
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: solo quiero guardar los registros a los que hice cambios ¿como hago?

El tema es complejo, sobre todo si además de update permites que se añadan o borren filas completas de la tabla.

Una solución es según haces cambios en el JTable, guardarte qué fila cambia (una lista de filas que han cambiado), de esta forma luego sólo haces update de esas filas cambiadas.

Lo que planteas es otra posible solución, pero requiere tener en memoria dos veces los datos y luego comparar campo por campo. Si son muchos registros puede requerir mucha memoria (el doble) y mucho tiempo de proceso.

Finalmente, la otra solución es hacer el update en base de datos según se va haciendo cada cambio en el JTable. Esto no te permite "cancelar" un grupo completo de cambios, pero posiblemente es lo más sencillo. Una opción para ese "cancelar" de un grupo completo de cambios es abrir la conexión a base de datos sin auto commit. De esta forma, vas haciendo cambios en el JTable y updates en base de datos y cuando el usuario termine de hacer los cambios, haces un conexion.commit() para hacer efectivos los cambios en bd o un conexion.rollback() para cancelar todos los cambios. Esto suele hacerse cuando desde código se hacen varios cambios en BD y se quiere que se hagan todos o ninguno, no se suele hacer mientras se espera un "aceptar" o "cancelar" del usuario, porque igual pasa media hora y no le da a ninguno de los botones.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: cambios, programa, quiero, registros, aplicaciones
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




La zona horaria es GMT -6. Ahora son las 19:04.