Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ParserExtension.cs
- SettingsPropertyCollection.cs
- EdmItemError.cs
- MaskInputRejectedEventArgs.cs
- TrackingLocation.cs
- ProtocolsConfigurationEntry.cs
- PageSettings.cs
- DriveInfo.cs
- PenLineCapValidation.cs
- DetailsViewRow.cs
- ADMembershipUser.cs
- DrawListViewSubItemEventArgs.cs
- PathFigureCollection.cs
- AttributeTable.cs
- HttpWebRequest.cs
- AnimatedTypeHelpers.cs
- DecimalStorage.cs
- webbrowsersite.cs
- GridViewUpdateEventArgs.cs
- ConsumerConnectionPoint.cs
- FilterEventArgs.cs
- StringArrayConverter.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- HiddenField.cs
- CallbackValidatorAttribute.cs
- AtlasWeb.Designer.cs
- HtmlHistory.cs
- ZoomPercentageConverter.cs
- FixedHyperLink.cs
- ECDsaCng.cs
- BinaryKeyIdentifierClause.cs
- HttpStaticObjectsCollectionWrapper.cs
- BaseParser.cs
- Int64Converter.cs
- DragEvent.cs
- NativeMethods.cs
- TemplatePartAttribute.cs
- ControlCachePolicy.cs
- NameTable.cs
- InvalidEnumArgumentException.cs
- AdornerPresentationContext.cs
- PageRequestManager.cs
- XsltInput.cs
- ReflectionTypeLoadException.cs
- BoundColumn.cs
- TTSEngineTypes.cs
- OutputCacheSettingsSection.cs
- ChannelCacheSettings.cs
- HttpListenerTimeoutManager.cs
- ThemeableAttribute.cs
- FormViewCommandEventArgs.cs
- WebPartConnectionsEventArgs.cs
- BaseCodeDomTreeGenerator.cs
- SynchronizingStream.cs
- EpmSyndicationContentSerializer.cs
- StorageAssociationTypeMapping.cs
- RegularExpressionValidator.cs
- OpenFileDialog.cs
- HttpCookiesSection.cs
- Light.cs
- ScriptControl.cs
- LoadWorkflowByInstanceKeyCommand.cs
- WizardPanel.cs
- EventLogEntryCollection.cs
- ErrorFormatterPage.cs
- ListManagerBindingsCollection.cs
- ImpersonationContext.cs
- NativeMethods.cs
- AppDomain.cs
- DynamicPropertyHolder.cs
- SessionPageStatePersister.cs
- SessionStateItemCollection.cs
- ListViewUpdateEventArgs.cs
- ListBoxAutomationPeer.cs
- XamlTreeBuilderBamlRecordWriter.cs
- WSDualHttpBinding.cs
- ListViewItemEventArgs.cs
- RowTypePropertyElement.cs
- DetailsViewRowCollection.cs
- MemberDescriptor.cs
- Monitor.cs
- Array.cs
- UiaCoreApi.cs
- IndentedWriter.cs
- ProfileBuildProvider.cs
- MenuItem.cs
- StringCollection.cs
- CatalogZoneDesigner.cs
- PointCollection.cs
- AttachmentCollection.cs
- AssemblyInfo.cs
- ComponentResourceManager.cs
- Transaction.cs
- UnauthorizedAccessException.cs
- DivideByZeroException.cs
- SmiTypedGetterSetter.cs
- IdnMapping.cs
- HelpOperationInvoker.cs
- WebPartCatalogAddVerb.cs
- SecurityTokenProvider.cs