From: zapata Date: Tue, 6 May 2003 18:08:05 +0000 (+0000) Subject: another database fix X-Git-Tag: BEFORE_MERGE_1_1~106 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=f8971c38ebf621b61b7e26b4adaae92a53391da2;p=mir.git another database fix --- diff --git a/source/mir/storage/Database.java b/source/mir/storage/Database.java index e64874ca..d11554b7 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.43 2003/05/06 17:37:50 zapata Exp $ + * @version $Id: Database.java,v 1.44 2003/05/06 18:08:05 zapata Exp $ * @author rk * */ @@ -659,9 +659,11 @@ public class Database implements StorageObject { o_store.add(sid); } } - } catch (SQLException sqe) { + } + catch (SQLException sqe) { throwSQLException(sqe, "selectByWhereClause"); - } finally { + } + finally { try { if (con != null) { freeConnection(con, stmt); @@ -1229,7 +1231,7 @@ public class Database implements StorageObject { return rs; } - +/* public ResultSet executeSql(String sql) throws StorageObjectFailure, SQLException { long startTime = System.currentTimeMillis(); Connection connection = null; @@ -1255,7 +1257,7 @@ public class Database implements StorageObject { } } } - +*/ private Map processRow(ResultSet aResultSet) throws StorageObjectFailure, StorageObjectExc { try { Map result = new HashMap(); @@ -1273,9 +1275,13 @@ public class Database implements StorageObject { } public List executeFreeSql(String sql, int aLimit) throws StorageObjectFailure, StorageObjectExc { + Connection connection = null; + Statement statement = null; try { List result = new Vector(); - ResultSet resultset = executeSql(sql); + connection = getPooledCon(); + statement = connection.createStatement(); + ResultSet resultset = executeSql(statement, sql); try { while (resultset.next() && result.size() < aLimit) { result.add(processRow(resultset)); @@ -1290,20 +1296,23 @@ public class Database implements StorageObject { catch (Throwable e) { throw new StorageObjectFailure(e); } + finally { + if (connection!=null) { + freeConnection(connection, statement); + } + } }; - public Map executeFreeSingleRowSql(String sql) throws StorageObjectFailure, StorageObjectExc { + public Map executeFreeSingleRowSql(String anSqlStatement) throws StorageObjectFailure, StorageObjectExc { try { - ResultSet resultset = executeSql(sql); + List resultList = executeFreeSql(anSqlStatement, 1); try { - - if (resultset.next()) - return processRow(resultset); + if (resultList.size()>0) + return (Map) resultList.get(0); else return null; } finally { - resultset.close(); } } catch (Throwable t) { diff --git a/source/mir/storage/StorageObject.java b/source/mir/storage/StorageObject.java index e2c6d974..5e63c2b1 100755 --- a/source/mir/storage/StorageObject.java +++ b/source/mir/storage/StorageObject.java @@ -197,15 +197,6 @@ public interface StorageObject { abstract public ResultSet executeSql(Statement a, String sql) throws StorageObjectFailure, SQLException; /** - * - * @param sql - * @return - * @throws StorageObjectFailure - * @throws SQLException - */ - abstract public ResultSet executeSql(String sql) throws StorageObjectFailure, SQLException; - - /** * Executes 1 sql statement and returns the results as a List of Maps * * @param sql diff --git a/source/mircoders/module/ModuleLanguage.java b/source/mircoders/module/ModuleLanguage.java index c0816633..b78444b2 100755 --- a/source/mircoders/module/ModuleLanguage.java +++ b/source/mircoders/module/ModuleLanguage.java @@ -30,9 +30,11 @@ package mircoders.module; import mir.log.LoggerWrapper; -import mir.module.*; +import mir.module.AbstractModule; +import mir.module.ModuleExc; +import mir.module.ModuleFailure; import mir.storage.StorageObject; -import mir.util.*; +import mir.util.JDBCStringRoutines; /** * Title: mir - another content management system