function Select($sql)
	{
		$this->RequireConnection(true);
		$this->Observe("DataAdapter ($this->_label) (DataAdapter.Select) " . $sql, OBSERVE_QUERY);
		
		try
		{
			$rs = $this->_driver->Query($this->_dbconn,$sql);
			$this->_num_retries = 0;
		}
		catch (Exception $ex)
		{
			// retry one time a communication error occurs
			if ($this->_num_retries == 0 && DataAdapter::$RETRY_ON_COMMUNICATION_ERROR && $this->IsCommunicationError($ex))
			{
				$this->_num_retries++;
				$this->Observe("DataAdapter ($this->_label) Communication error.  Retry attempt " . $this->_num_retries, OBSERVE_WARN);
				sleep(2); // slight delay to prevent throttling
				return $this->Select($sql);
			}
			
			$msg = "DataAdapter ($this->_label)" . ' Error Selecting SQL: ' . $ex->getMessage() . ' (retry attempts: '.$this->_num_retries.')';
			
			$this->Observe($msg,OBSERVE_FATAL);
			throw new Exception($msg,$ex->getCode());
		}
		
		return $rs;
	}
function Select($sql)
	{
		$this->RequireConnection(true);
		$this->Observe("DataAdapter ($this->_label) (DataAdapter.Select) " . $sql, OBSERVE_QUERY);
		
		try
		{
			$rs = $this->_driver->Query($this->_dbconn,$sql);
			$this->_num_retries = 0;
		}
		catch (Exception $ex)
		{
			// retry one time a communication error occurs
			if ($this->_num_retries == 0 && DataAdapter::$RETRY_ON_COMMUNICATION_ERROR && $this->IsCommunicationError($ex))
			{
				$this->_num_retries++;
				$this->Observe("DataAdapter ($this->_label) Communication error.  Retry attempt " . $this->_num_retries, OBSERVE_WARN);
				sleep(2); // slight delay to prevent throttling
				return $this->Select($sql);
			}
			
			$msg = "DataAdapter ($this->_label)" . ' Error Selecting SQL: ' . $ex->getMessage() . ' (retry attempts: '.$this->_num_retries.')';
			
			$this->Observe($msg,OBSERVE_FATAL);
			throw new Exception($msg,$ex->getCode());
		}
		
		return $rs;
	}
function Select ( $ sql ) { $ this -> RequireConnection ( true ) ; $ this -> Observe ( "DataAdapter ($this->_label) (DataAdapter.Select) " . $ sql , OBSERVE_QUERY ) ; try { $ rs = $ this -> _driver -> Query ( $ this -> _dbconn , $ sql ) ; $ this -> _num_retries = 0 ; } catch ( Exception $ ex ) { // retry one time a communication error occurs
 if ( $ this -> _num_retries == 0 && DataAdapter :: $ RETRY_ON_COMMUNICATION_ERROR && $ this -> IsCommunicationError ( $ ex ) ) { $ this -> _num_retries ++ ; $ this -> Observe ( "DataAdapter ($this->_label) Communication error.  Retry attempt " . $ this -> _num_retries , OBSERVE_WARN ) ; sleep ( 2 ) ; // slight delay to prevent throttling
 return $ this -> Select ( $ sql ) ; } $ msg = "DataAdapter ($this->_label)" . ' Error Selecting SQL: ' . $ ex -> getMessage ( ) . ' (retry attempts: ' . $ this -> _num_retries . ')' ; $ this -> Observe ( $ msg , OBSERVE_FATAL ) ; throw new Exception ( $ msg , $ ex -> getCode ( ) ) ; } return $ rs ; }
Executes a SQL select statement and returns a resultset that can be read
using Fetch

@access public
@param string $sql
@return resultset (dependent on the type of driver used)
Executes a SQL select statement and returns a resultset that can be read using Fetch