Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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.
//
// [....]
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EllipseGeometry.cs
- DesignerActionPanel.cs
- FormsIdentity.cs
- MSAAWinEventWrap.cs
- SmiContextFactory.cs
- EntityCodeGenerator.cs
- SubMenuStyle.cs
- XmlText.cs
- SQLDateTimeStorage.cs
- StrongNameMembershipCondition.cs
- ClientSettings.cs
- CheckBoxFlatAdapter.cs
- KeyGesture.cs
- CategoryNameCollection.cs
- OrderedDictionaryStateHelper.cs
- NameValueFileSectionHandler.cs
- ToolStripPanel.cs
- WebPartMovingEventArgs.cs
- DataControlImageButton.cs
- ContextMarshalException.cs
- ItemsChangedEventArgs.cs
- ThreadExceptionEvent.cs
- InternalControlCollection.cs
- SignatureGenerator.cs
- Stack.cs
- WebBrowserHelper.cs
- Stroke2.cs
- ExclusiveCanonicalizationTransform.cs
- handlecollector.cs
- ToolStripPanelRow.cs
- LinkedResource.cs
- ViewGenerator.cs
- WindowShowOrOpenTracker.cs
- ControlType.cs
- SocketElement.cs
- DocumentSequence.cs
- FieldNameLookup.cs
- AsyncCompletedEventArgs.cs
- ButtonBaseDesigner.cs
- MediaScriptCommandRoutedEventArgs.cs
- TemplateBaseAction.cs
- DirectoryObjectSecurity.cs
- basevalidator.cs
- SmtpReplyReader.cs
- ToolStripStatusLabel.cs
- ObjectList.cs
- WebHttpSecurityModeHelper.cs
- DataGridViewCellValidatingEventArgs.cs
- DesignerEditorPartChrome.cs
- FrameDimension.cs
- DataGridViewRowConverter.cs
- AdapterUtil.cs
- GridViewColumnHeader.cs
- JpegBitmapDecoder.cs
- LocalizableResourceBuilder.cs
- TypeSystem.cs
- DefaultProxySection.cs
- CodePageEncoding.cs
- DBSqlParserTable.cs
- XmlResolver.cs
- TemplatedWizardStep.cs
- DataListCommandEventArgs.cs
- ValueQuery.cs
- ListBase.cs
- XmlArrayAttribute.cs
- FontInfo.cs
- _UriTypeConverter.cs
- NativeMethods.cs
- TrackingLocation.cs
- ColorMap.cs
- localization.cs
- xmlsaver.cs
- OleDbPermission.cs
- SizeLimitedCache.cs
- HttpCookiesSection.cs
- followingquery.cs
- FullTextState.cs
- UnregisterInfo.cs
- ObjectItemCachedAssemblyLoader.cs
- VisualTransition.cs
- SendKeys.cs
- ConvertTextFrag.cs
- SqlMetaData.cs
- EditorBrowsableAttribute.cs
- ListBase.cs
- WinEventWrap.cs
- CapacityStreamGeometryContext.cs
- MetadataReference.cs
- StorageMappingItemLoader.cs
- HttpCacheVaryByContentEncodings.cs
- ClientUtils.cs
- CaseInsensitiveHashCodeProvider.cs
- DBNull.cs
- TextFormatterImp.cs
- GacUtil.cs
- MailWebEventProvider.cs
- DBSqlParserTable.cs
- CqlQuery.cs
- HttpCapabilitiesSectionHandler.cs
- BaseCodePageEncoding.cs