早上扫了几眼JDBC规范中的Connection,Statement,ResultSet对象,发现了许多小细节。记录于下:
按照scope从小到大排列依次是
ResultSet,Statement,Connection
因此,
隐式关闭 :
调用conn.close()将使该conn产生的所有statement对象关闭,调用stmt.close将其产生的rs对象关闭。所有引用ResultSet资源的对象,直到垃圾收集时,该资源才会被释放。当stmt对象再次执行的时候,rs对象也会被隐式关闭。如果一个rs对象具有CLOSE_CURSOR_AT_COMMIT,该rs对象将在commit之后关闭。
try...finally争论 :
第一种写法至少简洁一点,谁会受得了嵌套的try...finally?更重要的是,Never let exceptions propagate out of a finally block,rs、ps还是会照常关闭的。