Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Data / System / Data / OleDb / OleDbEnumerator.cs / 1 / OleDbEnumerator.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data.OleDb {
using System;
using System.ComponentModel;
using System.Data.Common;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
#if WINFSInternalOnly
internal
#else
public
#endif
sealed class OleDbEnumerator {
public OleDbEnumerator() {
}
public DataTable GetElements() {
OleDbConnection.ExecutePermission.Demand();
DataTable dataTable = new DataTable("MSDAENUM"); // WebData 112482
dataTable.Locale = CultureInfo.InvariantCulture;
OleDbDataReader dataReader = GetRootEnumerator();
OleDbDataAdapter.FillDataTable(dataReader, dataTable);
return dataTable;
}
static public OleDbDataReader GetEnumerator(Type type) {
OleDbConnection.ExecutePermission.Demand();
return GetEnumeratorFromType(type);
}
static internal OleDbDataReader GetEnumeratorFromType(Type type) { // WebData 99005
// will demand security appropriately
object value = Activator.CreateInstance(type, System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance, null, null, CultureInfo.InvariantCulture, null);
return GetEnumeratorReader(value);
}
static private OleDbDataReader GetEnumeratorReader(object value) {
NativeMethods.ISourcesRowset srcrowset = null;
try {
srcrowset = (NativeMethods.ISourcesRowset) value;
}
catch(InvalidCastException) {
throw ODB.ISourcesRowsetNotSupported();
}
if (null == srcrowset) {
throw ODB.ISourcesRowsetNotSupported();
}
value = null; // still held by ISourcesRowset, reused for IRowset
int propCount = 0;
IntPtr propSets = ADP.PtrZero;
Bid.Trace(" IID_IRowset\n");
OleDbHResult hr = srcrowset.GetSourcesRowset(ADP.PtrZero, ODB.IID_IRowset, propCount, propSets, out value);
Bid.Trace(" %08X{HRESULT}\n", hr);
Exception f = OleDbConnection.ProcessResults(hr, null, null);
if (null != f) {
throw f;
}
OleDbDataReader dataReader = new OleDbDataReader(null, null, 0, CommandBehavior.Default);
dataReader.InitializeIRowset(value, ChapterHandle.DB_NULL_HCHAPTER, ADP.RecordsUnaffected);
dataReader.BuildMetaInfo();
dataReader.HasRowsRead();
return dataReader;
}
static public OleDbDataReader GetRootEnumerator() {
OleDbConnection.ExecutePermission.Demand();
IntPtr hscp;
Bid.ScopeEnter(out hscp, "\n");
try {
//readonly Guid CLSID_MSDAENUM = new Guid(0xc8b522d0,0x5cf3,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d);
//Type msdaenum = Type.GetTypeFromCLSID(CLSID_MSDAENUM, true);
const string PROGID_MSDAENUM = "MSDAENUM";
Type msdaenum = Type.GetTypeFromProgID(PROGID_MSDAENUM, true);
return GetEnumeratorFromType(msdaenum);
}
finally {
Bid.ScopeLeave(ref hscp);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data.OleDb {
using System;
using System.ComponentModel;
using System.Data.Common;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
#if WINFSInternalOnly
internal
#else
public
#endif
sealed class OleDbEnumerator {
public OleDbEnumerator() {
}
public DataTable GetElements() {
OleDbConnection.ExecutePermission.Demand();
DataTable dataTable = new DataTable("MSDAENUM"); // WebData 112482
dataTable.Locale = CultureInfo.InvariantCulture;
OleDbDataReader dataReader = GetRootEnumerator();
OleDbDataAdapter.FillDataTable(dataReader, dataTable);
return dataTable;
}
static public OleDbDataReader GetEnumerator(Type type) {
OleDbConnection.ExecutePermission.Demand();
return GetEnumeratorFromType(type);
}
static internal OleDbDataReader GetEnumeratorFromType(Type type) { // WebData 99005
// will demand security appropriately
object value = Activator.CreateInstance(type, System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance, null, null, CultureInfo.InvariantCulture, null);
return GetEnumeratorReader(value);
}
static private OleDbDataReader GetEnumeratorReader(object value) {
NativeMethods.ISourcesRowset srcrowset = null;
try {
srcrowset = (NativeMethods.ISourcesRowset) value;
}
catch(InvalidCastException) {
throw ODB.ISourcesRowsetNotSupported();
}
if (null == srcrowset) {
throw ODB.ISourcesRowsetNotSupported();
}
value = null; // still held by ISourcesRowset, reused for IRowset
int propCount = 0;
IntPtr propSets = ADP.PtrZero;
Bid.Trace(" IID_IRowset\n");
OleDbHResult hr = srcrowset.GetSourcesRowset(ADP.PtrZero, ODB.IID_IRowset, propCount, propSets, out value);
Bid.Trace(" %08X{HRESULT}\n", hr);
Exception f = OleDbConnection.ProcessResults(hr, null, null);
if (null != f) {
throw f;
}
OleDbDataReader dataReader = new OleDbDataReader(null, null, 0, CommandBehavior.Default);
dataReader.InitializeIRowset(value, ChapterHandle.DB_NULL_HCHAPTER, ADP.RecordsUnaffected);
dataReader.BuildMetaInfo();
dataReader.HasRowsRead();
return dataReader;
}
static public OleDbDataReader GetRootEnumerator() {
OleDbConnection.ExecutePermission.Demand();
IntPtr hscp;
Bid.ScopeEnter(out hscp, "\n");
try {
//readonly Guid CLSID_MSDAENUM = new Guid(0xc8b522d0,0x5cf3,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d);
//Type msdaenum = Type.GetTypeFromCLSID(CLSID_MSDAENUM, true);
const string PROGID_MSDAENUM = "MSDAENUM";
Type msdaenum = Type.GetTypeFromProgID(PROGID_MSDAENUM, true);
return GetEnumeratorFromType(msdaenum);
}
finally {
Bid.ScopeLeave(ref hscp);
}
}
}
}
// 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
- TreeNodeCollection.cs
- DocumentsTrace.cs
- TemplatingOptionsDialog.cs
- AuthStoreRoleProvider.cs
- UndoManager.cs
- TabPageDesigner.cs
- LocalizabilityAttribute.cs
- TextSearch.cs
- XsdDuration.cs
- AuthenticatedStream.cs
- CircleHotSpot.cs
- ValidationErrorInfo.cs
- PopupEventArgs.cs
- ThreadExceptionEvent.cs
- mda.cs
- WindowsStartMenu.cs
- XsdCachingReader.cs
- TextEditorLists.cs
- UrlPropertyAttribute.cs
- recordstatescratchpad.cs
- DataSourceHelper.cs
- DataServiceQueryOfT.cs
- DbProviderFactoriesConfigurationHandler.cs
- TextServicesDisplayAttribute.cs
- PeerValidationBehavior.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- SettingsPropertyWrongTypeException.cs
- MenuRenderer.cs
- ComboBoxDesigner.cs
- XmlNamespaceMappingCollection.cs
- FrameworkObject.cs
- PeerTransportSecuritySettings.cs
- FtpCachePolicyElement.cs
- QuotedPrintableStream.cs
- TextParaLineResult.cs
- XmlSchemaSet.cs
- ConvertersCollection.cs
- CodeAssignStatement.cs
- QuotedStringFormatReader.cs
- CompressedStack.cs
- BitmapEffectInput.cs
- DetailsViewPageEventArgs.cs
- EntityKey.cs
- VisualStyleInformation.cs
- SettingsPropertyCollection.cs
- _TransmitFileOverlappedAsyncResult.cs
- EntityCollection.cs
- UpdateDelegates.Generated.cs
- WindowsFormsHelpers.cs
- GeneralTransform3DGroup.cs
- ObjectConverter.cs
- Axis.cs
- HttpBindingExtension.cs
- ElementNotEnabledException.cs
- EntityParameter.cs
- Delegate.cs
- ImageInfo.cs
- CustomErrorCollection.cs
- WebPartRestoreVerb.cs
- EnumUnknown.cs
- WebPartEditorOkVerb.cs
- DetailsView.cs
- IChannel.cs
- BaseTemplateParser.cs
- StrongNamePublicKeyBlob.cs
- SettingsProperty.cs
- CommandDesigner.cs
- XmlStreamNodeWriter.cs
- PropertyContainer.cs
- DataBinding.cs
- TimeZone.cs
- TransactionFlowAttribute.cs
- ClientRoleProvider.cs
- RegistryKey.cs
- SessionStateItemCollection.cs
- BaseProcessor.cs
- DecoderFallbackWithFailureFlag.cs
- DataAdapter.cs
- ProfileProvider.cs
- MeasureItemEvent.cs
- TextPointerBase.cs
- TextEndOfSegment.cs
- SynchronizationContext.cs
- InternalBufferOverflowException.cs
- StyleSelector.cs
- TreeViewItem.cs
- RequestQueryParser.cs
- LostFocusEventManager.cs
- contentDescriptor.cs
- CodeDirectoryCompiler.cs
- WebPartVerbCollection.cs
- DataSourceControl.cs
- HtmlListAdapter.cs
- ForceCopyBuildProvider.cs
- DynamicValidatorEventArgs.cs
- ToolStripPanelRenderEventArgs.cs
- CompilerError.cs
- SubqueryRules.cs
- DataGridColumnHeaderCollection.cs
- SR.cs