Code:
/ FX-1434 / FX-1434 / 1.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
- SmiMetaData.cs
- SHA1CryptoServiceProvider.cs
- ChangeInterceptorAttribute.cs
- BoolExpr.cs
- DataViewManagerListItemTypeDescriptor.cs
- GAC.cs
- TrackingStringDictionary.cs
- GenerateTemporaryAssemblyTask.cs
- ObjectDataSourceWizardForm.cs
- IRCollection.cs
- HandleRef.cs
- GroupDescription.cs
- Listbox.cs
- ADMembershipProvider.cs
- RequestedSignatureDialog.cs
- SignatureSummaryDialog.cs
- XsltContext.cs
- ConsoleCancelEventArgs.cs
- ButtonFlatAdapter.cs
- TreeViewItem.cs
- RegisteredDisposeScript.cs
- ObjectDataSourceSelectingEventArgs.cs
- ArraySortHelper.cs
- EditorPart.cs
- followingsibling.cs
- DataPagerFieldItem.cs
- ForEachDesigner.xaml.cs
- Operator.cs
- Int16Animation.cs
- ConditionValidator.cs
- UniqueEventHelper.cs
- ResXBuildProvider.cs
- ObjectPersistData.cs
- DriveNotFoundException.cs
- TextTreeTextElementNode.cs
- PackageRelationshipCollection.cs
- ZipFileInfoCollection.cs
- Command.cs
- PriorityRange.cs
- CodeMethodInvokeExpression.cs
- RedirectionProxy.cs
- NavigationProperty.cs
- HGlobalSafeHandle.cs
- RightNameExpirationInfoPair.cs
- Positioning.cs
- ExpressionParser.cs
- ClientApiGenerator.cs
- MetaData.cs
- ToolboxItemAttribute.cs
- SubMenuStyle.cs
- UrlPropertyAttribute.cs
- AssociationType.cs
- ScrollableControl.cs
- IList.cs
- TypeResolver.cs
- SqlBulkCopy.cs
- FileReservationCollection.cs
- embossbitmapeffect.cs
- Vector3D.cs
- ObjectMemberMapping.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- OletxResourceManager.cs
- GridViewUpdatedEventArgs.cs
- BeginEvent.cs
- SqlBooleanMismatchVisitor.cs
- InternalSafeNativeMethods.cs
- WeakReadOnlyCollection.cs
- CfgParser.cs
- ValidatedControlConverter.cs
- SqlPersonalizationProvider.cs
- ForEachAction.cs
- InstancePersistence.cs
- PackageProperties.cs
- TlsnegoTokenProvider.cs
- HtmlWindowCollection.cs
- documentsequencetextview.cs
- DataGridItemAttachedStorage.cs
- _Rfc2616CacheValidators.cs
- XmlReflectionImporter.cs
- CuspData.cs
- ExeContext.cs
- HttpInputStream.cs
- DesignerObjectListAdapter.cs
- DateTimeSerializationSection.cs
- DispatcherHooks.cs
- StringWriter.cs
- BasicHttpMessageSecurityElement.cs
- ResolveCriteriaCD1.cs
- SqlDataSourceConnectionPanel.cs
- HttpListenerRequest.cs
- DetailsViewRowCollection.cs
- EventLogEntry.cs
- SqlCacheDependencyDatabaseCollection.cs
- RegisteredHiddenField.cs
- serverconfig.cs
- ObjectManager.cs
- ResponseStream.cs
- AsyncPostBackTrigger.cs
- ICollection.cs
- XamlDesignerSerializationManager.cs