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
- TextBox.cs
- httpapplicationstate.cs
- PixelFormats.cs
- CapabilitiesAssignment.cs
- TextTreePropertyUndoUnit.cs
- Trace.cs
- GridView.cs
- ConstrainedDataObject.cs
- Content.cs
- KeyGesture.cs
- InplaceBitmapMetadataWriter.cs
- VirtualizingStackPanel.cs
- ValidatedControlConverter.cs
- JsonQueryStringConverter.cs
- DoubleCollectionConverter.cs
- AstNode.cs
- OutputScope.cs
- XmlIgnoreAttribute.cs
- ExpressionEvaluator.cs
- EditCommandColumn.cs
- ValidatingCollection.cs
- SettingsBindableAttribute.cs
- DefaultSection.cs
- SerTrace.cs
- Transform3D.cs
- PersonalizationStateInfoCollection.cs
- Dispatcher.cs
- TargetControlTypeCache.cs
- ConfigErrorGlyph.cs
- safePerfProviderHandle.cs
- LiteralTextParser.cs
- TaskFormBase.cs
- SqlClientWrapperSmiStream.cs
- SessionStateContainer.cs
- BuildManager.cs
- XmlEncoding.cs
- TextElementEditingBehaviorAttribute.cs
- UriParserTemplates.cs
- BamlLocalizableResourceKey.cs
- DataGridViewRowCollection.cs
- DesignOnlyAttribute.cs
- coordinator.cs
- MaterialGroup.cs
- WindowsGraphics.cs
- XmlNodeList.cs
- ObjectCacheHost.cs
- Encoder.cs
- ToolTip.cs
- WebReferencesBuildProvider.cs
- Baml2006ReaderContext.cs
- BooleanKeyFrameCollection.cs
- NameObjectCollectionBase.cs
- XPathNode.cs
- SkipStoryboardToFill.cs
- NameObjectCollectionBase.cs
- MediaPlayerState.cs
- OrthographicCamera.cs
- SecureUICommand.cs
- ScrollPattern.cs
- _LocalDataStore.cs
- WebPartZoneDesigner.cs
- FormsAuthenticationModule.cs
- DataBoundControlDesigner.cs
- DelimitedListTraceListener.cs
- SEHException.cs
- PixelFormats.cs
- Vector3D.cs
- TextEffectResolver.cs
- CustomAttributeSerializer.cs
- ThicknessKeyFrameCollection.cs
- DataSourceXmlAttributeAttribute.cs
- LinqDataSourceUpdateEventArgs.cs
- GatewayIPAddressInformationCollection.cs
- WorkflowOperationInvoker.cs
- GridViewPageEventArgs.cs
- ping.cs
- SystemIPGlobalProperties.cs
- ToolStripContentPanelDesigner.cs
- StdRegProviderWrapper.cs
- WasHttpHandlersInstallComponent.cs
- PackageDigitalSignature.cs
- WindowsListViewGroupHelper.cs
- TypeGeneratedEventArgs.cs
- PrintDialog.cs
- BitmapCodecInfo.cs
- odbcmetadatacolumnnames.cs
- SqlCacheDependencyDatabase.cs
- ValidatorCompatibilityHelper.cs
- FontUnit.cs
- NavigationProgressEventArgs.cs
- XmlAnyElementAttributes.cs
- odbcmetadatafactory.cs
- OdbcConnectionFactory.cs
- ToolStripRenderEventArgs.cs
- LinqDataSourceView.cs
- SoapInteropTypes.cs
- ByeMessage11.cs
- SqlMethodCallConverter.cs
- NamedPipeAppDomainProtocolHandler.cs
- RtfToken.cs