internal NpgsqlDataReader( ArrayList resultsets, ArrayList responses, NpgsqlConnection connection, CommandBehavior behavior)
        {
            _resultsets = resultsets;
            _responses = responses;
            _connection = connection;
            _rowIndex = -1;
            _resultsetIndex = 0;

            if (_resultsets.Count > 0)
                _currentResultset = (NpgsqlResultSet)_resultsets[_resultsetIndex];

            _behavior = behavior;
            _isClosed = false;
        }
        /// <summary>
        /// Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend.
        /// </summary>
        /// <returns>True if the reader was advanced, otherwise false.</returns>
        public Boolean NextResult()
        {
            NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "NextResult");

            _currentResultset = null;
            while ((_resultsetIndex + 1) < _resultsets.Count && !HaveResultSet())
            {
                _resultsetIndex++;
                _rowIndex         = -1;
                _currentResultset = (NpgsqlResultSet)_resultsets[_resultsetIndex];

                if (!HaveResultSet())
                {
                    String[] _returnStringTokens  = ((String)_responses[_resultsetIndex]).Split(null);  // whitespace separator.
                    int      responseAffectedRows = 0;

                    try
                    {
                        responseAffectedRows = Int32.Parse(_returnStringTokens[_returnStringTokens.Length - 1]);
                    }
                    catch (FormatException)
                    {
                        responseAffectedRows = -1;
                    }

                    if (responseAffectedRows != -1)
                    {
                        if (_recordsAffected == -1)
                        {
                            _recordsAffected = responseAffectedRows;
                        }
                        else
                        {
                            _recordsAffected += responseAffectedRows;
                        }
                    }
                }
            }
            return(HaveResultSet());
        }
        /// <summary>
        /// Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend.
        /// </summary>
        /// <returns>True if the reader was advanced, otherwise false.</returns>
        public Boolean NextResult()
        {
            NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "NextResult");

            if((_resultsetIndex + 1) < _resultsets.Count)
            {
                _resultsetIndex++;
                _rowIndex = -1;
                _currentResultset = (NpgsqlResultSet)_resultsets[_resultsetIndex];
                return true;
            }
            else
                return false;

        }
Ejemplo n.º 4
0
        /// <summary>
        /// Advances the data reader to the next result, when multiple result sets were returned by the PostgreSQL backend.
        /// </summary>
        /// <returns>True if the reader was advanced, otherwise false.</returns>
        public Boolean NextResult()
        {
            NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "NextResult");

            _currentResultset = null;
            while((_resultsetIndex + 1) < _resultsets.Count && !HaveResultSet())
            {
                _resultsetIndex++;
                _rowIndex = -1;
                _currentResultset = (NpgsqlResultSet)_resultsets[_resultsetIndex];

                if (!HaveResultSet())
                {
                    String[] _returnStringTokens = ((String)_responses[_resultsetIndex]).Split(null);	// whitespace separator.
                    int responseAffectedRows = 0;

                    try
                    {
                        responseAffectedRows = Int32.Parse(_returnStringTokens[_returnStringTokens.Length - 1]);
                    }
                    catch (FormatException)
                    {
                        responseAffectedRows = -1;
                    }

                    if (responseAffectedRows != -1)
                    {
                        if (_recordsAffected == -1)
                        {
                            _recordsAffected = responseAffectedRows;
                        }
                        else
                        {
                            _recordsAffected += responseAffectedRows;
                        }
                    }
                }
            }
            return HaveResultSet();

        }