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
- XmlReaderDelegator.cs
- ImageSourceConverter.cs
- FloaterBaseParaClient.cs
- AttributeParameterInfo.cs
- OutputCacheModule.cs
- RightsManagementPermission.cs
- Configuration.cs
- PropertyCollection.cs
- TextTreeNode.cs
- Rect3D.cs
- RestHandler.cs
- RegexNode.cs
- DrawingAttributesDefaultValueFactory.cs
- PolicyStatement.cs
- TemporaryBitmapFile.cs
- FontClient.cs
- XmlILModule.cs
- RtfControlWordInfo.cs
- HGlobalSafeHandle.cs
- HttpCapabilitiesSectionHandler.cs
- EntitySqlQueryBuilder.cs
- HierarchicalDataBoundControl.cs
- HotSpot.cs
- DefaultMemberAttribute.cs
- HebrewNumber.cs
- TextTreeExtractElementUndoUnit.cs
- Queue.cs
- ClientScriptManager.cs
- DynamicResourceExtensionConverter.cs
- XmlDataLoader.cs
- ListBoxItemWrapperAutomationPeer.cs
- MarkupCompilePass1.cs
- CustomAttribute.cs
- ChainOfResponsibility.cs
- HashCoreRequest.cs
- SerializationFieldInfo.cs
- SrgsElement.cs
- DateTimeParse.cs
- WizardStepBase.cs
- ArgumentException.cs
- DataGridViewRow.cs
- MemberCollection.cs
- XPathEmptyIterator.cs
- ScrollableControl.cs
- SystemSounds.cs
- URLAttribute.cs
- InputBinder.cs
- SHA1CryptoServiceProvider.cs
- RootProfilePropertySettingsCollection.cs
- JsonReaderWriterFactory.cs
- HttpMethodConstraint.cs
- DesignerTransactionCloseEvent.cs
- DataSourceProvider.cs
- SiteMap.cs
- DataControlImageButton.cs
- DllNotFoundException.cs
- Signature.cs
- XmlCharType.cs
- PropertyEmitterBase.cs
- RectIndependentAnimationStorage.cs
- util.cs
- Pointer.cs
- GradientBrush.cs
- Token.cs
- ExpressionVisitorHelpers.cs
- InstanceDataCollectionCollection.cs
- UserNamePasswordValidationMode.cs
- XmlILModule.cs
- NotSupportedException.cs
- LoginDesignerUtil.cs
- ThreadInterruptedException.cs
- DragCompletedEventArgs.cs
- InvalidateEvent.cs
- IPPacketInformation.cs
- ConfigurationStrings.cs
- SyndicationCategory.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- TabletDeviceInfo.cs
- SuppressMessageAttribute.cs
- DynamicObjectAccessor.cs
- ScrollItemProviderWrapper.cs
- HandlerBase.cs
- DivideByZeroException.cs
- MetadataArtifactLoaderCompositeResource.cs
- EventLogQuery.cs
- GiveFeedbackEventArgs.cs
- CollectionViewGroupRoot.cs
- WebPartConnectionsCloseVerb.cs
- ProviderIncompatibleException.cs
- HtmlTextArea.cs
- TraceXPathNavigator.cs
- PriorityChain.cs
- MouseGesture.cs
- EdmEntityTypeAttribute.cs
- QueuePathDialog.cs
- BamlTreeNode.cs
- UpDownBase.cs
- PatternMatcher.cs
- HwndHost.cs
- updatecommandorderer.cs