Me estoy haciendo un poco confundido, estaba leyendo el siguiente de http://en.wikipedia.org/wiki/Java_Database_Connectivityse cierren las conexiones de base de datos en Java
Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor",
"myLogin",
"myPassword");
Statement stmt = conn.createStatement();
try {
stmt.executeUpdate("INSERT INTO MyTable(name) VALUES ('my name') ");
} finally {
//It's important to close the statement when you are done with it
stmt.close();
}
¿No debe cerrar la conexión conn? ¿Qué está pasando realmente si el conn.close() no ocurre?
Tengo una aplicación web privada que estoy manteniendo que actualmente no cierra ninguna de las dos formas, pero ¿es la más importante la primera, la que está conectada, o ambas?
El sitio sigue bajando intermitentemente pero el servidor sigue diciendo que es un problema de conexión a la base de datos, mi sospecha es que no se está cerrando, pero no sé cuál cerrar para ninguno.
¡Ayuda impresionante, gracias! No capté ni pensé en las declaraciones conn! = Null. – onaclov2000
@ onaclov2000 Sí, 'rs',' ps', 'conn' pueden ser' null', según donde se rompa el código. Es por eso que esto se conoce como el patrón "seguro". –
@Pascal Thivent: En realidad, no es necesario que los cierremos todos. El libro "Core Java Volume two - Advanced Features" ha escrito: El método 'close' de un objeto' Statement' cierra automáticamente el 'ResultSet' asociado si la sentencia tiene un conjunto de resultados abierto. De forma similar, el método 'close' de la clase' Connection' cierra todas las 'Statements' de' Connection'. –