From ed3c834086967cd182c280e5e0c063daa76b2553 Mon Sep 17 00:00:00 2001 From: zapata Date: Tue, 6 May 2003 17:37:50 +0000 Subject: [PATCH] some small debug fixes --- source/mir/storage/Database.java | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/source/mir/storage/Database.java b/source/mir/storage/Database.java index 7c89df43..e64874ca 100755 --- a/source/mir/storage/Database.java +++ b/source/mir/storage/Database.java @@ -76,7 +76,7 @@ import mir.util.JDBCStringRoutines; * Treiber, Host, User und Passwort, ueber den der Zugriff auf die * Datenbank erfolgt. * - * @version $Id: Database.java,v 1.42 2003/05/03 00:21:22 zapata Exp $ + * @version $Id: Database.java,v 1.43 2003/05/06 17:37:50 zapata Exp $ * @author rk * */ @@ -1232,10 +1232,12 @@ public class Database implements StorageObject { public ResultSet executeSql(String sql) throws StorageObjectFailure, SQLException { long startTime = System.currentTimeMillis(); + Connection connection = null; + Statement statement = null; try { - Connection connection = getPooledCon(); - Statement statement = connection.createStatement(); + connection = getPooledCon(); + statement = connection.createStatement(); ResultSet result; result = statement.executeQuery(sql); @@ -1247,6 +1249,11 @@ public class Database implements StorageObject { logger.error(e.getMessage() +"\n" + (System.currentTimeMillis() - startTime) + "ms. for: " + sql); throw new StorageObjectFailure(e); } + finally { + if (connection!=null) { + freeConnection(connection, statement); + } + } } private Map processRow(ResultSet aResultSet) throws StorageObjectFailure, StorageObjectExc { @@ -1267,11 +1274,15 @@ public class Database implements StorageObject { public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc { try { - ResultSet resultset = executeSql(sql); List result = new Vector(); - - while (resultset.next() && result.size() < aLimit) { - result.add(processRow(resultset)); + ResultSet resultset = executeSql(sql); + try { + while (resultset.next() && result.size() < aLimit) { + result.add(processRow(resultset)); + } + } + finally { + resultset.close(); } return result; @@ -1284,11 +1295,16 @@ public class Database implements StorageObject { public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc { try { ResultSet resultset = executeSql(sql); + try { - if (resultset.next()) - return processRow(resultset); - else - return null; + if (resultset.next()) + return processRow(resultset); + else + return null; + } + finally { + resultset.close(); + } } catch (Throwable t) { throw new StorageObjectFailure(t); -- 2.11.0