some small debug fixes
authorzapata <zapata>
Tue, 6 May 2003 17:37:50 +0000 (17:37 +0000)
committerzapata <zapata>
Tue, 6 May 2003 17:37:50 +0000 (17:37 +0000)
source/mir/storage/Database.java

index 7c89df4..e64874c 100755 (executable)
@@ -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);