コード例 #1
0
        public IEnumerable<MonetDbQueryResponseInfo> GetResults()
        {
            _temp = _stream.ReadLine();

            if (_temp == null)
                throw new IOException("Unexpected end of stream");

            do
            {
                var ri = new MonetDbQueryResponseInfo();
                var headerInfo = new List<string>();

                while (_temp != "." && _temp[0] != '[')
                {
                    switch (_temp[0])
                    {
                        case '&':
                            ri = _temp.ToQueryResponseInfo();
                            break;
                        case '%':
                            headerInfo.Add(_temp);
                            break;
                        case '!':
                            throw new MonetDbException("Error! " + _temp.Substring(1));
                    }

                    _temp = _stream.ReadLine();

                    if (_temp == null)
                        throw new IOException("Unexpected end of stream");
                }

                ri.Columns = GetColumnInfo(headerInfo);
                ri.Data = GetRows();

                yield return ri;

            } while (_temp != ".");

            _stream = null;
        }
コード例 #2
0
        /// <summary>
        /// Advances the data reader to the next result, when reading the results of batch SQL statements.
        /// </summary>
        /// <returns></returns>
        public bool NextResult()
        {
            var flag = _responeInfoEnumerator.MoveNext();
            _responseInfo = _responeInfoEnumerator.Current;
            _enumerator = _responseInfo.Data.GetEnumerator();

            // we need to regenerate schema table for next result set
            if (_schemaTable != null)
            {
                _schemaTable = GenerateSchemaTable();
            }

            return flag;
        }