Título: [RESUELTO]No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 21 Febrero 2012, 16:02 pm Hola a todos, ¿qué tal?
Bueno, llevo un par de días como un loco y no doy con el fallo en mi programa... os cuento un poco de qué va la historia. Tengo una BBDD de empleados y departamentos con una relación 1:N donde cada empleado tiene un solo departamento y los departamentos de 0 a N empleados... Pues bien, estoy programando en Java un aplicación sencilla que permita añadir, eliminar y modificar datos de cualquier empleado/departamento. Lo tengo todo acabado, excepto un JFrame en el que arriba tengo un JTextField con el nombre de un departamento y debajo de éste un JTable en el que se muestran los datos de todos los empleados de ese departamento. Hay también botones para pasar al siguiente, anterior, primer y último departamento, con sus eventos correspondientes que vacían y rellenan de nuevo la tabla con los empleados correspondientes al departamento activo. Y por último tengo un botón que me permitiría borrar de la BBDD el empleado que esté seleccionado. Este es el código: Código
Donde rsE es un ResultSet con todos los empleados del departamento activo y rsD es otro ResultSet con todos los departamentos. Todos esos println sobran, los he usado para ver qué hace la aplicación y esta me devuelve lo siguiente: Cita de: NetBeans run: Entro en evento Fila seleccionada: 1 entro en if entro en el try // aquí me salta la Excepción e llego al finally salgo del finally BUILD SUCCESSFUL (total time: 10 seconds) Este código funcionaba perfectamente para borrar departamentos... Y así llevo un par de días. Hoy he pedido ayuda al profesor y ha estado una hora mirando y tocando sin sacar absolutamente nada, lo cual me hace pensar que seguramente será algún fallo bastante estúpido... Gracias a todos. Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: HdM en 21 Febrero 2012, 16:39 pm Buenas.
Código
Creo que es debido a que antes de empezar el for, no sabes en qué posición se encuentra el rsE, de modo que después de salir del bucle y tras los sucesivos rsE.next() te deja el resultset en EOF, sin registro activo y por eso, al intentar eliminar te salta el error. Creo que antes de empezar el bucle, deberías comprobar que el rsE contiene registros y hacer un movefirst. Ése podría ser un error. Otro podría ser la condición del for, ¿no debería ser i < fila en vez de i < fila +1? Saludos. Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 21 Febrero 2012, 16:51 pm Hola Bulld0z3r, gracias por contestar.
rsE se carga con el constructor del JFrame donde estoy trabajando mediante el siguiente método: Código
A ese método lo llamo, como he dicho, en el constructor del JFrame así como en todos los eventos de los botones primero, último, anterior y siguiente. Así me aseguro que rsE tenga siempre datos y además me posiciono en el primero de ellos. En cuanto a la condición del for, antes la tenía así pero el método getSelectedRow() devuelve enteros a partir del 0 (éste incluido) si hay algo seleccionado, es decir, si cambio la condición y está seleccionada la primera fila no entro en el bucle, ¿me equivoco? Saludos. Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: HdM en 21 Febrero 2012, 17:19 pm Buenas.
La condición del for debería ser i<=fila Saludos. Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 21 Febrero 2012, 17:28 pm Sigue sin funcionar.
En este fragmento: Código imprime la línea de "entro en el try", pero no la otra. Es decir, salta la excepción al intentar rsE.getString("APELLIDO"), supongo. Revisaré mi forma de controlar los resultSet a ver... Dejo aquí el código completo, por si alguien tiene mucho tiempo libre XD http://www.mediafire.com/?xnn2pfkdkxfz15e (http://www.mediafire.com/?xnn2pfkdkxfz15e) Versión en .txt: http://www.mediafire.com/?4vtdket2nuer36w (http://www.mediafire.com/?4vtdket2nuer36w) Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: jperezmonge en 21 Febrero 2012, 17:55 pm Asi lo hago yo, a ver si te puede dar un enfoque distinto
Código
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 21 Febrero 2012, 17:58 pm jperezmonge, si no me equivoco, eso me borra sólo la fila del JTable, ¿no? Todo lo que estoy haciendo va contra una base de datos.
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: jperezmonge en 21 Febrero 2012, 18:05 pm Ahhmmm, yo es que en el modelo del jTable cargo los datos de la base de datos a una colección y desde hay trabajo, lo siento te he ayudado hasta donde yo llego, si no te sirve de nada, lo siento.
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 21 Febrero 2012, 18:08 pm Gracias, no te preocupes... de todas formas con lo que has dicho estoy pensando otra posibilidad que tal vez funcione... a ver que pasa :silbar:
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: jperezmonge en 21 Febrero 2012, 18:11 pm De esta forma no debería de lanzarte excepción ni estar pendiente de si en la siguiente vuelta esta apuntando a null o no.
prueba a recorrer la consulta de este modo. Código
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 24 Febrero 2012, 12:54 pm No entiendo eso, ahora lo miro más despacio. Aún así, me ha dado por probar otra cosa y tampoco funciona, os pongo el código del evento del botón Eliminar:
Código
Cuando llega a la línea de rsBorrar.deleteRow(); es cuando casca, igual que antes, hasta ahí lo hace todo bien (lo sé por los println). Estoy apunto de ingresar en un manicomio! Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 26 Febrero 2012, 20:34 pm Este código puesto como evento llamado al hacer clic en la tabla funcionaba, lo he movido para que se ejecute al pulsar en el botón eliminar y ya no funciona....
¿Alguien sabe qué estoy pasando por alto? Gracias... Código
Título: Re: No encuentro error, intentando borrar de un resultset Publicado por: |Miguel| en 27 Febrero 2012, 13:59 pm Resuelto, estoy hecho un lumbreras.
Estaba haciendo mal el rsE, filtrando por un campo q no existe en esa tabla... |