Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / ProviderBase / DataReaderContainer.cs / 1 / DataReaderContainer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Data.ProviderBase { using System; using System.Data; using System.Data.Common; using System.Diagnostics; internal abstract class DataReaderContainer { protected readonly IDataReader _dataReader; protected int _fieldCount; static internal DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes) { if (returnProviderSpecificTypes) { DbDataReader providerSpecificDataReader = (dataReader as DbDataReader); if (null != providerSpecificDataReader) { return new ProviderSpecificDataReader(dataReader, providerSpecificDataReader); } } return new CommonLanguageSubsetDataReader(dataReader); } protected DataReaderContainer(IDataReader dataReader) { Debug.Assert(null != dataReader, "null dataReader"); _dataReader = dataReader; } internal int FieldCount { get { return _fieldCount; } } internal abstract bool ReturnProviderSpecificTypes { get; } protected abstract int VisibleFieldCount { get; } internal abstract Type GetFieldType(int ordinal); internal abstract object GetValue(int ordinal); internal abstract int GetValues(object[] values); internal string GetName(int ordinal) { string fieldName = _dataReader.GetName(ordinal); Debug.Assert(null != fieldName, "null GetName"); return ((null != fieldName) ? fieldName : ""); } internal DataTable GetSchemaTable() { return _dataReader.GetSchemaTable(); } internal bool NextResult() { _fieldCount = 0; if (_dataReader.NextResult()) { _fieldCount = VisibleFieldCount; return true; } return false; } internal bool Read() { return _dataReader.Read(); } private sealed class ProviderSpecificDataReader : DataReaderContainer { private DbDataReader _providerSpecificDataReader; internal ProviderSpecificDataReader(IDataReader dataReader, DbDataReader dbDataReader) : base(dataReader) { Debug.Assert(null != dataReader, "null dbDataReader"); _providerSpecificDataReader = dbDataReader; _fieldCount = VisibleFieldCount; } internal override bool ReturnProviderSpecificTypes { get { return true; } } protected override int VisibleFieldCount { get { int fieldCount = _providerSpecificDataReader.VisibleFieldCount; Debug.Assert(0 <= fieldCount, "negative FieldCount"); return ((0 <= fieldCount) ? fieldCount : 0); } } internal override Type GetFieldType(int ordinal) { Type fieldType = _providerSpecificDataReader.GetProviderSpecificFieldType(ordinal); Debug.Assert(null != fieldType, "null FieldType"); return fieldType; } internal override object GetValue(int ordinal) { return _providerSpecificDataReader.GetProviderSpecificValue(ordinal); } internal override int GetValues(object[] values) { return _providerSpecificDataReader.GetProviderSpecificValues(values); } } private sealed class CommonLanguageSubsetDataReader : DataReaderContainer { internal CommonLanguageSubsetDataReader(IDataReader dataReader ) : base(dataReader) { _fieldCount = VisibleFieldCount; } internal override bool ReturnProviderSpecificTypes { get { return false; } } protected override int VisibleFieldCount { get { int fieldCount = _dataReader.FieldCount; Debug.Assert(0 <= fieldCount, "negative FieldCount"); return ((0 <= fieldCount) ? fieldCount : 0); } } internal override Type GetFieldType(int ordinal) { return _dataReader.GetFieldType(ordinal); } internal override object GetValue(int ordinal) { return _dataReader.GetValue(ordinal); } internal override int GetValues(object[] values) { return _dataReader.GetValues(values); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Message.cs
- TypeDescriptionProvider.cs
- ContainerTracking.cs
- PointLightBase.cs
- FtpRequestCacheValidator.cs
- DataGridViewComponentPropertyGridSite.cs
- ViewEvent.cs
- _LoggingObject.cs
- AnnouncementInnerClientCD1.cs
- SamlConstants.cs
- ScriptModule.cs
- ToolStripDropDownItem.cs
- RegexStringValidatorAttribute.cs
- CaseStatementSlot.cs
- UnsafeNativeMethods.cs
- FocusChangedEventArgs.cs
- FunctionDescription.cs
- RegexTypeEditor.cs
- FixedPosition.cs
- DictionaryEntry.cs
- JournalEntryStack.cs
- SharedUtils.cs
- AssociationSetMetadata.cs
- SeparatorAutomationPeer.cs
- DeviceContexts.cs
- TriState.cs
- FrameworkRichTextComposition.cs
- WebPartUtil.cs
- DataPagerFieldCollection.cs
- DefaultWorkflowTransactionService.cs
- Random.cs
- ConstructorNeedsTagAttribute.cs
- TreeNodeClickEventArgs.cs
- externdll.cs
- PrivilegedConfigurationManager.cs
- PointCollection.cs
- PartialTrustValidationBehavior.cs
- Synchronization.cs
- ReferentialConstraintRoleElement.cs
- TextureBrush.cs
- Thickness.cs
- SelectionGlyphBase.cs
- JsonDataContract.cs
- ConstraintConverter.cs
- CatalogZoneBase.cs
- FastEncoder.cs
- ButtonField.cs
- SmtpCommands.cs
- TextFormatterImp.cs
- LockRenewalTask.cs
- Border.cs
- GuidConverter.cs
- BuildManager.cs
- InputEventArgs.cs
- CategoryGridEntry.cs
- PerformanceCounter.cs
- PropertyPathConverter.cs
- ConsumerConnectionPoint.cs
- RtType.cs
- Assert.cs
- Pair.cs
- UInt32Converter.cs
- CachedFontFamily.cs
- SafeRightsManagementSessionHandle.cs
- SqlVisitor.cs
- CodeTypeReference.cs
- FactoryGenerator.cs
- KeyConverter.cs
- MatrixValueSerializer.cs
- CmsUtils.cs
- ReferenceSchema.cs
- AddInContractAttribute.cs
- TypedTableBaseExtensions.cs
- MouseGestureValueSerializer.cs
- FixedElement.cs
- ConfigurationFileMap.cs
- ProcessManager.cs
- InputDevice.cs
- DataGridViewAccessibleObject.cs
- DoubleLink.cs
- CheckBoxRenderer.cs
- SystemColors.cs
- ExceptionHelpers.cs
- PropertyManager.cs
- CellNormalizer.cs
- EventMappingSettings.cs
- SpellerInterop.cs
- OracleDataReader.cs
- BitVec.cs
- SourceFileBuildProvider.cs
- FunctionQuery.cs
- ClassicBorderDecorator.cs
- VScrollProperties.cs
- MetadataItemEmitter.cs
- AppLevelCompilationSectionCache.cs
- WebHeaderCollection.cs
- QilStrConcat.cs
- ReadOnlyHierarchicalDataSource.cs
- XmlSchemaChoice.cs
- DataGridAddNewRow.cs