Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

buenas tardes, al ejecutar el programa me sale un erros

cuando ejecuto el programa en el momento de guardar un producto me da una exxepcion en el producto dao, lacual dice que no se pueden ejecutar acciones en una conexion cerrada , yo creo que es por que en Produto controller se creo una variable de tipo productodao , y se hace un contructor para que en el momento que se creo un productoController se inicialice esta varible y cree una cinexion con la clase conexionFactory por lo cual los metodos de productodao los cuales la conexion se finaliza con un final,try, de la conexion que ingresa y debido a que esta coneccion se inicializa cada vez que se crea un nuevo productoController, en el m9omento de ejecutar el mettodo listar que cierra automaticamente la conexxion , en el momento de ejecutrar el metodo guardar la conexion ya ha sido cerrada, la solucion que veo es que se incialicen las conecciones en el cada metodo de productodao , sin embargo este codigo seria repetitivo que fuen el motivo de crear la conexion en el ProductoController, nose si alla otra posible solucion y si el productoControler cada cuanto se inicializa, ay que en el codigo nomas evidencio que se inicializa una vez en el constructor de controlDeStickFrame, gracias por su atencion quedo pendiente a cualquier respuesta

1 respuesta

Hola Jaider,

Parece que estás recibiendo una excepción indicando que no puedes realizar acciones en una conexión cerrada. Esto puede ser causado por el hecho de que estás cerrando la conexión después de listar los productos y luego tratas de guardar un producto con la misma conexión.

Una solución posible sería asegurarte de que la conexión se cierre solo cuando hayas terminado de realizar todas las operaciones que necesitas. En tu caso, podrías intentar cerrar la conexión después de guardar el producto.

Y sobre la inicialización del productoController, en el código de la lección, se inicializa en el constructor de ControlDeStockFrame. Esto significa que se inicializa cada vez que se crea una nueva instancia de ControlDeStockFrame.

En cuanto a tu preocupación sobre el código repetitivo, una posible solución sería crear un método en la clase ProductoDAO que se encargue de la conexión. Este método podría ser llamado cada vez que necesites realizar una operación en la base de datos, asegurándote de que siempre tengas una conexión abierta cuando la necesites. Sin embargo, más adelante el professor explicar sobre las buenas prácticas.

Y luego, en tus métodos de listar y guardar, podrías llamar a este método antes de realizar cualquier operación en la base de datos:

public void listar() {
    conectar();
    // lógica para listar los productos
}

public void guardar(Producto producto) {
    conectar();
    // lógica para guardar el producto
}

Espero que esta sugerencia te sea útil. Recuerda que es importante asegurarte de que siempre tienes una conexión abierta antes de intentar realizar cualquier operación en la base de datos.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios