public boolean iterateOverReadOnly(String query, ResultSetHandler rsh) throws SQLException
	{
		boolean good = true;
		Connection connection = null;
		Statement statement = null;
		try
		{
			Class.forName(driver);
			connection = DriverManager.getConnection(url, username, passwd);
			statement = connection.createStatement();
			ResultSet result = statement.executeQuery(query);

			int index = 0;
			boolean more=true;
			while (good && (more = result.next()))
			{
				good &= rsh.processRow(++index, result);
			}
			if (!more) good = true;
			result.close();
			result = null;
			statement.close();
			statement = null;
		}
		catch (Exception e)
		{
			System.out.println(e);
			good = false;
		}
		finally
		{
			if (statement != null)
			{
				try
				{
					statement.close();
				}
				catch (SQLException e)
				{
					System.out.println(e);
				}
				statement = null;
			}
			if (connection != null)
			{
				try
				{
					connection.close();
				}
				catch (SQLException e)
				{
					System.out.println(e);
				}
				connection = null;
			}
		}

		return good;
	}