docs: public void exists(String tableName, String columnName, boolean ignoreCase) throws SQLException
  	{
  		if (tableName == null) throw new SQLException("TableName was null.  You must specify a valid table name.");
  		if (columnName == null) throw new SQLException("Column name was null.  You must specify a valid column name.");
  
  		ResultSet columns = getColumns(tableName);
  		
  		if(columns == null)
  		{
  			//columns not in the cache, look them up and cache
  			try
  			{
  				//System.out.println("DBUtility: looking up table: " + tableName);
  				//System.out.println("Select * from " + tableName + " where 1=0");
  				PreparedStatement checkTable = m_connection.prepareStatement("Select * from " + tableName + " where 1=0");
  				columns = checkTable.executeQuery();
  				putColumns(tableName, columns);
  			}
  			catch(SQLException sqle)
  			{
  				if (sqle.getMessage().startsWith(m_ORA_EXCEPTION_1000) || sqle.getMessage().startsWith(m_ORA_EXCEPTION_604))
  				{
  					System.out.println("Exceeded available Oracle cursors.  Resetting connection and trying the SQL statement again...");
  					resetConnection();
  					exists(tableName, columnName, ignoreCase);
  				}
  				else
  				{
  					System.out.println(sqle.getMessage());
  					throw sqle;
  				}
  			}
  		}
  		
  		ResultSetMetaData rsMeta = columns.getMetaData();
  		int iColumns = rsMeta.getColumnCount();
  		for(int i = 1; i <= iColumns; i++)
  		{
  			if(ignoreCase)
  			{
  				//ignore case while testing
  				if(columnName.equalsIgnoreCase(rsMeta.getColumnName(i)))
  				{
  					return;
  				}
  			}
  			else
  			{
  				//enforce case-sensitive compare
  				if(columnName.equals(rsMeta.getColumnName(i)))
  				{
  					return;
  				}				
  				
  			}
  			
  			//System.out.println("Found column: " + rsMeta.getColumnName(i));
  		}
  
  		throw new SQLException("The column '" + columnName + "' was not found in table '" + tableName + "'.");
  
  	}