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; }
/// <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; }