Can ResultSets and Connections be passed around like other objects?

Joe Sam Shirah

Yes, although, as usual, technically we are passing object references. However, there is a chain of dependency that must be kept in mind and should be tracked for Connection, Statement and ResultSet.

For example, If a ResultSet is is not scrollable, rows already read are not available, so passing the same ResultSet to different methods may not work as expected. If the originating Statement is closed, the ResultSet is generally no longer viable.

If there are multiple Statements on a Connection, a commit will affect all of them. Addtionally, as seen in Is Connection thread safe for Oracle drivers?, a Connection may carry out its requirement to be threadsafe by executing Statements serially.

Last ( although not exhaustively, ) once a Connection is closed, all associated Statements and ResultSets are effectively closed as well.