/**
  * Creates a new DatabaseException.
  * 
  * @param	string			$message		error message
  * @param	Database		$db			affected db object
  * @param	PreparedStatement	$preparedStatement	affected prepared statement
  */
 public function __construct($message, Database $db, PreparedStatement $preparedStatement = null)
 {
     $this->db = $db;
     $this->DBType = $db->getDBType();
     $this->preparedStatement = $preparedStatement;
     // prefer errors from prepared statement
     if ($this->preparedStatement !== null && $this->preparedStatement->getErrorNumber()) {
         $this->errorNumber = $this->preparedStatement->getErrorNumber();
         $this->errorDesc = $this->preparedStatement->getErrorDesc();
     } else {
         $this->errorNumber = $this->db->getErrorNumber();
         $this->errorDesc = $this->db->getErrorDesc();
     }
     parent::__construct($message, intval($this->errorNumber));
 }