Operación de error de Java no permitida después de cerrar ResultSet
-
Error de Java
java.sql.SQLException: Operación no permitida después de cerrar ResultSet
-
Solucione el error de Java
java.sql.SQLException: Operación no permitida después de cerrar ResultSet
Este tutorial demuestra el error java.sql.SQLException: Operación no permitida después de cerrar ResultSet
en Java.
Error de Java java.sql.SQLException: Operación no permitida después de cerrar ResultSet
El error Operación no permitida después de cerrar el conjunto de resultados
es una excepción de SQL cuando intentamos acceder a un conjunto de resultados cerrado. Como menciona Java Doc, cada vez que se cierra un objeto de declaración, si existe su objeto Resultset
, también se cerrará.
El problema con el error es que la instancia de Resultset
también guardará la declaración subyacente. Entonces, cuando se cierra la declaración subyacente, el Conjunto de resultados
también se cerrará, lo que arroja el error.
Aquí hay un fragmento de código que arrojará el mismo error.
Código:
ResultSet Result_Set; // class variable
Statement Demo_Statement = null;
try {
Demo_Statement = DB_Connection.createStatement();
Result_Set = Demo_Statement.getGeneratedKeys();
} catch (Exception e) {
throw e;
} finally {
try {
if (Demo_Statement != null)
Demo_Statement.close();
} catch (SQLException e) {
throw e;
}
}
System.out.println(Result_Set.next());
El código anterior con una conexión a la base de datos generará el siguiente error.
java.sql.SQLException: Operation not allowed after ResultSet closed
Solucione el error de Java java.sql.SQLException: Operación no permitida después de cerrar ResultSet
El problema en el código es que no podemos cerrar la instancia de declaración antes de que terminemos con Resultset
. Una vez que hayamos terminado con el Conjunto de resultados
, podemos cerrar tanto el Conjunto de resultados
como la Instancia de declaración.
Como podemos ver, estamos tratando de imprimir el valor booleano de Result_Set.next()
, pero estamos usando el Resultset
después de cerrar la instancia de declaración, que también está cerrando el Resultset
.
En el código anterior, la solución será no cerrar la declaración en este lugar o no usar el Conjunto de resultados
después de cerrar la instancia de la declaración. Se basa en su aplicación, ya sea que podamos eliminar Demo_Statement.close()
o System.out.println(Result_Set.next());
declaración.
Código:
ResultSet Result_Set; // class variable
Statement Demo_Statement = null;
try {
Demo_Statement = DB_Connection.createStatement();
Result_Set = Demo_Statement.getGeneratedKeys();
} catch (Exception e) {
throw e;
} finally {
try {
if (Demo_Statement != null)
Demo_Statement.close();
} catch (SQLException e) {
throw e;
}
}
Acabamos de eliminar la parte en la que intentamos usar el Conjunto de resultados
después de cerrar la instancia de declaración. Una vez que se hayan realizado todas las operaciones con el Conjunto de resultados
, podemos cerrar tanto la instancia de declaración como el Conjunto de resultados
.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase