• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Junilu Lacar
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • Jeanne Boyarsky
  • Rob Spoor
  • Bear Bibeault
Saloon Keepers:
  • Tim Moores
  • Tim Holloway
  • Piet Souris
  • Carey Brown
  • Stephan van Hulst
Bartenders:
  • Frits Walraven
  • fred rosenberger
  • salvin francis

Is connection.close(); enough?

 
Greenhorn
Posts: 4
jQuery Firefox Browser Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
When using a data source to access a database is "connection.close();" going to close the associated statement and resultSet?

I have read a number of articles posted on a number of sites,
almost all agree that it is good practice to close the resultSet, statement and connection individually.
I have also read that the JDBC specification details that closing the connection will also close any associated resources (resultSet and statements).
There does not seem to be a right or wrong answer.

So would code closing just the connection be appropriate or should we always close all three?
 
Sheriff
Posts: 22248
117
Eclipse IDE Spring VI Editor Chrome Java Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Closing the connection will close the (prepared / callable) statements and result sets. However, depending on the application, there may be a long time between no longer needing the statements and result sets and closing the connection. All this time, these resources will still be active. This can lead to a huge memory leak (especially with larger result sets) and failure to create statements later if the maximum number is reached. So yeah, close everything as soon as you're done with them. Preferably, use try-with-resources:
Likewise for ResultSet. You can even combine the two:
 
A day job? In an office? My worst nightmare! Comfort me tiny ad!
Thread Boost feature
https://coderanch.com/t/674455/Thread-Boost-feature
reply
    Bookmark Topic Watch Topic
  • New Topic