2011-06-15 12 views

Respuesta

13

En primer lugar, PreparedStatement nunca se abren. Es solo un Statement preparado que se ejecuta. La instrucción se envía al RDBMS que ejecuta la instrucción SQL compilada por el PreparedStatement. La conexión a la declaración SQL debe abrirse durante la consulta SQL y cerrarse cuando no se necesitan otras llamadas RDMS.

Puede enviar muchos Statement/PreparedStatement como sea necesario siempre y cuando, finalmente, cierra su ResultSet y PreparedStatement una vez que haya terminado con ellos y luego cierra la conexión RDBMS.

0

Como muestra el ejemplo en el tutorial, debe cerrarlo después de que se hayan realizado todas sus consultas.

Una vez que se cierra la declaración, el RDMS puede liberar todos los recursos asociados con su extracto. Por lo tanto, para usarlo más, tendrías que volver a preparar la misma declaración.

0

Creo que, después de cada interacción con la base de datos, cada componente como declaración, conjunto de resultados debe estar cerrado, a excepción de la conexión, si tiende a realizar más operaciones.

Y no hay necesidad de preocuparse, si está creando la declaración preparada una y otra vez, porque como va a utilizar la misma declaración una y otra vez, no habrá ningún problema de rendimiento.

13

¿Debería este método abrir y cerrar PreparedStatement con cada llamada a un solo método?

Si está creando el objeto PreparedStatement dentro del método, entonces debe cerrarlo, una vez que haya terminado con él. Puede reutilizar el objeto PreparedStatement para varias ejecuciones, pero una vez que haya terminado con él, debe cerrarlo.

Esto se debe a que, aunque se supone que todos los objetos Statement (incluidos los PreparedStatements) se cierran al invocar Connection.close(), rara vez es el caso. En ciertos controladores JDBC, especialmente el de Oracle, el controlador no podrá cerrar la conexión si la conexión tiene objetos ResultSet y Statement anulados. Esto significa que, en estos controladores:

  • Nunca debe perder una referencia a un objeto PreparedStatement. Si lo hace, entonces la conexión no se cerrará, hasta que ocurra la recolección de basura. Si está reutilizando las instancias de PreparedStatement para diferentes declaraciones SQL, es fácil olvidar esto.
  • Debería cerrar PreparedStatement una vez que ya no lo necesite. Solo entonces Connection.close() puede derribar la conexión física.
0

Sí ... No hay problemas si está creando la declaración preparada n cantidad de veces, porque como usará la misma instrucción en todos los lugares.No necesita tener ninguna observación aquí con respecto al rendimiento

Gracias

Cuestiones relacionadas