protected function _execute()
    {
        try {
            $this->_wrapPrepareSql();
            $this->_pdoSt = $this->_pdo->prepare($this->_prepare_sql);
            $this->_bindParams();
            $this->_pdoSt->execute();
            $this->_reset();  // memory-resident mode, singleton pattern, need reset build attr
            // if debug mode, print sql and bind params to stdout
            if ($this->_debug) {
                $this->_pdoSt->debugDumpParams();
                $this->_debug = FALSE; // close debug
            }
        } catch (PDOException $e) {
            // when time out, reconnect
            if ($this->_isTimeout($e)) {
                $this->_closeConnection();
                $this->_connect();
                // retry
                try {
                    $this->_wrapPrepareSql();
                    $this->_pdoSt = $this->_pdo->prepare($this->_prepare_sql);
                    $this->_bindParams();
                    $this->_pdoSt->execute();
                    $this->_reset();
                    // if debug mode, print sql and bind params to stdout
                    if ($this->_debug) {
                        $this->_pdoSt->debugDumpParams();
                        $this->_debug = FALSE; // close debug
                    }
                } catch (PDOException $e) {
                    throw $e;
                }

            } else {
                throw $e;
            }
        }

    }