* 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
*
*/
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);
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 {
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;
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);