close statement on all DbAdaptorTemplate paths
diff --git a/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java b/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java
index 4eab821..ed37c18 100644
--- a/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java
+++ b/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java
@@ -177,9 +177,19 @@
String query) throws SQLException {
Statement st = conn.createStatement();
log.fine("about to query: " + query);
- ResultSet rs = st.executeQuery(query);
- log.fine("queried");
- return new StatementAndResult(st, rs);
+ try {
+ ResultSet rs = st.executeQuery(query);
+ log.fine("queried");
+ return new StatementAndResult(st, rs);
+ } catch (SQLException sqle) {
+ try {
+ st.close(); // could mask originl sqle
+ } catch (SQLException maskingSqle) {
+ log.log(Level.WARNING,
+ "failed to close after query failure", maskingSqle);
+ }
+ throw sqle;
+ }
}
private static StatementAndResult getStreamFromDb(Connection conn,
@@ -189,9 +199,19 @@
/* 2nd streaming flag */ java.sql.ResultSet.CONCUR_READ_ONLY);
st.setFetchSize(/*3rd streaming flag*/ Integer.MIN_VALUE);
log.fine("about to query for stream: " + query);
- ResultSet rs = st.executeQuery(query);
- log.fine("queried for stream");
- return new StatementAndResult(st, rs);
+ try {
+ ResultSet rs = st.executeQuery(query);
+ log.fine("queried for stream");
+ return new StatementAndResult(st, rs);
+ } catch (SQLException sqle) {
+ try {
+ st.close(); // could mask originl sqle
+ } catch (SQLException maskingSqle) {
+ log.log(Level.WARNING,
+ "failed to close after query failure", maskingSqle);
+ }
+ throw sqle;
+ }
}
private static void tryClosingStatementAndResult(StatementAndResult strs) {