public int GetValues(object[] values) { if (values == null) { throw new ArgumentNullException("values"); } int num = Math.Min(values.Length, this.FieldCount); for (int i = 0; i < num; i++) { if (this.sequentialAccess && this.nestedDataReaders[i] != null) { this.currentColumn = i + 1; XmlaDataReader xmlaDataReader = new XmlaDataReader(this, this.nestedDataReaders[i]); xmlaDataReader.currentParentRow = this.dtStore.Rows.Count; while (xmlaDataReader.InternalRead()) { } values[i] = xmlaDataReader; } else { values[i] = this.GetValue(i); if (this.sequentialAccess && values[i] is ColumnXmlReader) { values[i] = new ColumnXmlReader(values[i].ToString()); } } } return(num); }
private object InternalGetValue(int ordinal) { if (this.isClosed) { throw new InvalidOperationException(XmlaSR.DataReaderClosedError); } if (!this.dataReady) { throw new InvalidOperationException(XmlaSR.DataReaderInvalidRowError); } if (this.xmlReader == null || this.xmlReader.ReadState == ReadState.Closed) { throw new InvalidOperationException(); } if (ordinal < 0 || ordinal >= this.FieldCount) { throw new ArgumentOutOfRangeException("ordinal"); } object obj; if (this.sequentialAccess) { obj = this.SequentialReadXmlValue(ordinal); } else { DataRow dataRow = this.dtStore.Rows[this.currentRow]; if (this.nestedDataReaders[ordinal] == null) { obj = null; if (!(dataRow[ordinal] is DBNull)) { obj = dataRow[ordinal]; } } else { int num = 0; if (!(dataRow[ordinal] is DBNull)) { num = (int)dataRow[ordinal]; } XmlaDataReader xmlaDataReader = this.nestedDataReaders[ordinal]; xmlaDataReader.currentRow = num - 1; obj = xmlaDataReader; } } this.ThrowIfInlineError(obj); if (obj is XmlaDataReader) { XmlaDataReader xmlaDataReader2 = obj as XmlaDataReader; if (xmlaDataReader2.IsClosed) { xmlaDataReader2.ReOpen(); } } return(obj); }
private object ReadColumnValue(int ordinal) { //Type type = FormattersHelpers.GetElementType(this.xmlReader, "http://www.w3.org/2001/XMLSchema-instance", null); Type type = FormattersHelpers.GetElementType(this.xmlReader, "http://www.w3.org/2001/XMLSchema-instance", typeof(object)); if (type == null) { type = this.GetFieldType(ordinal); } XmlaDataReader xmlaDataReader = this.nestedDataReaders[ordinal]; object obj; if (xmlaDataReader == null) { string columnXsdTypeName = FormattersHelpers.GetColumnXsdTypeName(this.dtStore.Columns[ordinal]); bool flag = columnXsdTypeName == "xmlDocument"; bool isArray = type.IsArray && columnXsdTypeName != "base64Binary"; if (!this.sequentialAccess) { obj = FormattersHelpers.ReadRowsetProperty(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.LookupNamespace(this.xmlReader.Prefix), type, false, isArray, false); if (flag) { string strIn = obj as string; ColumnXmlReader columnXmlReader = new ColumnXmlReader(strIn); obj = columnXmlReader; } } else if (flag) { ColumnXmlReader columnXmlReader2 = new ColumnXmlReader(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.NamespaceURI); obj = columnXmlReader2; } else { obj = FormattersHelpers.ReadRowsetProperty(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.NamespaceURI, type, false, isArray, false); } } else if (this.sequentialAccess) { obj = xmlaDataReader; } else { bool flag2 = xmlaDataReader.IsClosed; if (flag2) { xmlaDataReader.ReOpen(); } int count = xmlaDataReader.dtStore.Rows.Count; xmlaDataReader.currentParentRow = this.dtStore.Rows.Count; while (xmlaDataReader.InternalRead()) { } obj = count; } return(obj); }
private XmlaDataReader(XmlaDataReader parentReader) { this.columnNameLookup = new Hashtable(); this.columnXmlNameLookup = new Hashtable(); this.rowsetNames = new List <string>(); this.rowElement = FormattersHelpers.RowElement; this.rowNamespace = FormattersHelpers.RowElementNamespace; this.readersXmlDepth = -1; //base..ctor(); this.parentReader = parentReader; this.InternalInitialize(parentReader.xmlReader, parentReader.commandBehavior, parentReader.owner); }
public AdomdDataReader GetDataReader(int ordinal) { if (this.embeddedReaders == null) { this.embeddedReaders = new AdomdDataReader[this.FieldCount]; } if (this.embeddedReaders[ordinal] == null) { XmlaDataReader dataReader = this.XmlaDataReader.GetDataReader(ordinal); this.embeddedReaders[ordinal] = new AdomdDataReader(dataReader); } return(this.embeddedReaders[ordinal]); }
private void AdjustDataTableNames(DataTable[] dataTables) { XmlaDataReader xmlaDataReader = (this.dataReader != null) ? this.dataReader.XmlaDataReader : null; if (xmlaDataReader != null && xmlaDataReader.RowsetNames != null && xmlaDataReader.RowsetNames.Count == dataTables.Length) { for (int i = 0; i < dataTables.Length; i++) { if (!string.IsNullOrEmpty(xmlaDataReader.RowsetNames[i])) { dataTables[i].TableName = xmlaDataReader.RowsetNames[i]; } } } }
private void AdjustDataSet(DataSet dataSet) { XmlaDataReader xmlaDataReader = (this.dataReader != null) ? this.dataReader.XmlaDataReader : null; if (xmlaDataReader != null) { DataTable[] array = new DataTable[dataSet.Tables.Count]; dataSet.Tables.CopyTo(array, 0); this.AdjustDataTableNames(array); } if (this.isAffectedObjects) { dataSet.DataSetName = "AffectedObjects"; dataSet.ExtendedProperties["BaseVersion"] = this.AffectedObjectsBaseVersion; dataSet.ExtendedProperties["CurrentVersion"] = this.AffectedObjectsCurrentVersion; dataSet.ExtendedProperties["name"] = this.AffectedObjectsDatabase; } }
private XmlaDataReader(XmlaDataReader parentReader, XmlaDataReader nested) { this.columnNameLookup = new Hashtable(); this.columnXmlNameLookup = new Hashtable(); this.rowsetNames = new List <string>(); this.rowElement = FormattersHelpers.RowElement; this.rowNamespace = FormattersHelpers.RowElementNamespace; this.readersXmlDepth = -1; //base..ctor(); this.xmlReader = nested.xmlReader; this.commandBehavior = (nested.commandBehavior & ~CommandBehavior.SequentialAccess); this.owner = nested.owner; this.schemaTable = nested.schemaTable; this.sequentialAccess = false; this.columnCount = nested.columnCount; this.currentColumn = 0; this.dataReady = false; this.columnNameLookup = nested.columnNameLookup; this.columnXmlNameLookup = nested.columnXmlNameLookup; this.depth = nested.depth; this.isClosed = false; this.parentReader = nested.parentReader; this.dtStore = nested.dtStore; this.currentRow = -1; this.currentParentRow = nested.currentParentRow; this.rowElement = nested.rowElement; this.rowNamespace = nested.rowNamespace; this.nestedDataReaders = new XmlaDataReader[nested.nestedDataReaders.Length]; for (int i = 0; i < nested.nestedDataReaders.Length; i++) { if (nested.nestedDataReaders[i] != null) { this.nestedDataReaders[i] = new XmlaDataReader(nested, nested.nestedDataReaders[i]); } else { this.nestedDataReaders[i] = null; } } }
internal Enumerator(XmlaDataReader dataReader) { bool closeReader = (CommandBehavior.CloseConnection & dataReader.commandBehavior) != CommandBehavior.Default; this.enumerator = new DbEnumerator(dataReader, closeReader); }
private AdomdDataReader(XmlaDataReader xmlaDataReader) { this.XmlaDataReader = xmlaDataReader; }