problemas al editar datos de varias tablas a la ves.

hola a todos, estoy haciendo un programa para una pequeña prepaga y me surgió un problema que me viene llevando dolor de cabeza hace días.
bueno primero les cuento que no me tira ningún stacktrace del error. asi que es medio complicado encontrar la falla en si.
así que ice esta imagen para explicarles un poco mejor

en la imagen van a ver que hay 2 cuadros de color verde los cuales al darle al botón modificar me permite guardar los datos que modifique, pero no me guarda los datos que modifique en el cuadro de color rojo.
este es el código del botón modificar.
 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Por dónde empezar...

Primero que nada, NO CONCATENES SQL. Nunca. NO CONCATENES SQL. Utiliza PreparedStatements parametrizados. NO CONCATENES SQL.

Si no sabes por qué, simplemente pon esto como valor en uno de tus campos:

 

Y dile adiós a tu tabla  .

Segunda, deberías usar un statement para cada update. Estás usando el mismo statement para todos los updates, tal vez de ahí viene el problema, porque los objetos de statements guardan estado.

Imagen de muskafly

Formato Codigo

Utiliza PreparedStaments y por favor agrega tu codigo entre tags   para que lo podamos leer mejor.

Imagen de ezamudio

Transacción

Finalmente, qué pasa si uno de los updates falla? Está bien que los que pasaron antes dejen sus cambios? O hay alguna regla que diga que deben pasar todos, o ninguno?

Porque si tienen que pasar todos o ninguno, entonces debes además realizar todos los updates dentro del contexto de una transacción en base de datos, para que si falla uno, hagas rollback y entonces no se aplique ninguno de los cambios.

hola gracias por responder ya

hola gracias por responder ya e probado con diferentes Statement y me pasa igual.
lo que me llama la atencion es que alta1 y alta 2 si me los gurada pero el resto no.
es desir hasta esta parte del codigo si anda.
 

Imagen de muskafly

Como dice eZamudio es

Como dice eZamudio es necesario implementar transacciones y ejecutar un rollback

Gracias por responder. Y cómo

Gracias por responder. Y cómo sería eso.

Imagen de ezamudio

SQL concatenado

Sigues concatenando SQL. Tienes que arreglar eso, de verdad.

 

Que valores habia

Viendo la imagen los campos que no se actualizan no tienen nada, habia un valor antes, a lo mejor no hay ni datos en la BD para esos campos.

hola, gracias por responder

hola, gracias por responder si abia balores, y no me los modifica,
lo que me llama ami la tencion es que si yo pongo de esta forma no me deja guardar los datos en la segunda base de datos pero si de la primera.
 
pero si al final de la primer centencia de la primer base de datos le agrego un else.
if (alta1==1){
}else{
si me permite modificar la segunda base de datos y la primera.
pero ahora si pongo else en las demas no.
la verdad ya nose como hacer.

Sube tu código

Es dificil hacer un debug de este código, esta de mas decir que lo que estas haciendo no es para nada recomendable por motivos de seguridad y en casos de mantenibilidad ni hablar, lo que te recomiendo es que subas tu código a algun repositorio de github , para que los cientificos locos de javamexico podamos darle una manita de gato a eso, creo que deberias leer muchos libros ya que a futuro si alguien tiene que mantener eso pensará que odiabas al mundo.

Ademas un modelo de base de datos nunca deberia tener tablas como alta1, alta2 y alta3, si tienes algo como eso quiere decir que estas normalizando mal tu modelo, si tu modelo esta mal , todo lo de mas se vuelve fragil, muy propenso a errores y no resistente a cambios.

es la forma que me enseñaron

es la forma que me enseñaron de trabajar con bases dedatos.
se que estoy muy verde con el asunto de java, ya que soy muy nob estoy empesando todo esto.
lo que no entiendo el por que metad del codigo si anda y la otra mitad no. y la unica diferencia es un else

Sube el proyecto y lo revisaré este fin de semana

Sube el proyecto y lo revisaré este fin de semana, debe haber un error lógico, puede que el error esté ahí y no lo veas, por eso es bueno que una persona ajena le de una mirada.
Otra pregunta, ya debugeaste para asegurar que está ejecutando el statement?
Por ultimo puedes comprimirlo y enviarlo a mi e-mail marcos.roberto.lopez@gmail.com

Saludos.

Hola gracias por responder.

Hola gracias por responder. En un rato te paso el programa. Te aclaro que el programa está echo en eclipce. En el caso que no lo tengas te paso el programa eclipce también.

Imagen de neko069

Mñe

Checa, a lo que se refiere @ezamudio es que deberías tener algo como:

 

Algo así.

Aquí mis observaciones

He revisado el proyecto que compartiste, aqui mis observaciones.

1. He realizado una consulta a la base de datos, obteniendo los siguientes resultados.

Select * from alta1

id txtpo
3 11
1 12
6 12
7 12
9 20
... ...

Tienes más de un registro con txtpo=12

2. En la siguiente porción del código fuente

 

El metodo executeUpdate te retorna un contador de las filas que fueron afectadas, cómo en la base de datos tienes 3 registros con txtpo=12, entonces alta=3 cuando ejecutas la query para txtpo=12. En este caso no se cumple if(alta == 1) y por lo tanto no se ejecutan las otras queries.

Recomendaciones
1. El campo txtpo debería ser unico en la base de datos
2. Cambia la condicion if(alta == 1) por if(alta > 0)

Roberto Lopez

hola gracias por responder,

hola gracias por responder, pero le soy sincero no les entiendo a que se refieren.
soy muy nuevo en esto, el curso que ice de java lo ice atraves del municipio y solo duro 2 meses

Lee este libro cuando tengas tiempo