Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Cuál es la razón de Obtener los IDs asi?

Veo que el instructor accedio a las llaves mediante el metodo execute, claro, hizo un execute que devuelve un booleano y se arroja a la nada, con el propósito de que se ejecuten los statements, entiendo que un booleano seriviria mas que nada para temas de validaciones, es decir, de si se ejecutó o no el statement, (aunque el resultado, segun el, es un poco extraño, dijo que en esta ocasión la funcion devolveria un false, raro). Pero ese no es el punto, mi pregunta es: ¿En qué se diferencia de las otras dos maneras de poder conseguirlo? es decir, me parece un poco innecesario dejar una funcion que devuelve un booleano suelta a la nada, por que no hacerlo de la manera que se utilizo para el metodo listar? Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadEs decir, de esta manera, usando get resultSet, pero lo que es aun mas, Sé que existe el método ".executeQuery" que devuelve directo un resultSet y ya no un booleano, por que optó por esa manera? es que la función executeQuery fue recien añadida?

1 respuesta
solución!

Hola Gabriel,

Entiendo tu duda y es una muy buena observación. El método "execute" se utiliza en este caso porque estamos realizando una operación de inserción en la base de datos, y no esperamos un conjunto de resultados (ResultSet) como respuesta, como sería el caso de una consulta SELECT, por ejemplo.

En cuanto a la devolución de un booleano, tienes razón, puede parecer un poco extraño. La razón por la que se utiliza "execute" en lugar de "executeQuery" o "executeUpdate" es porque "execute" puede ser utilizado para cualquier tipo de declaración SQL, no sólo para las operaciones de inserción. Esto lo hace más flexible en ciertos contextos.

Además, en este caso particular, se utiliza "execute" porque se quiere obtener el ID del registro insertado, que es un valor autogenerado por la base de datos. Para hacer esto, se pasa el valor Statement.RETURN_GENERATED_KEYS como argumento al método "execute". Esto le indica al driver de JDBC que debe hacer disponible el valor autogenerado (el ID en este caso) para su recuperación.

En resumen, se podría haber utilizado "executeUpdate" (que devuelve un entero representando el número de filas afectadas) para la inserción, pero luego no se podría haber recuperado el ID del registro insertado. Por otro lado, "executeQuery" no se podría haber utilizado en este caso porque se espera un ResultSet como respuesta, lo cual no tiene sentido para una operación de inserción.

Espero haber ayudado y buenos estudios! 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.