Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- EndpointAddress10.cs
- Aggregates.cs
- IIS7WorkerRequest.cs
- AdPostCacheSubstitution.cs
- StructuralObject.cs
- NaturalLanguageHyphenator.cs
- KeyValueConfigurationCollection.cs
- ManifestBasedResourceGroveler.cs
- InternalTypeHelper.cs
- ProvidersHelper.cs
- PrimitiveXmlSerializers.cs
- PositiveTimeSpanValidatorAttribute.cs
- _NestedSingleAsyncResult.cs
- ContactManager.cs
- Catch.cs
- activationcontext.cs
- PermissionSetEnumerator.cs
- UpdateRecord.cs
- LinqDataSourceUpdateEventArgs.cs
- AsymmetricSecurityBindingElement.cs
- Geometry.cs
- StackSpiller.Bindings.cs
- Item.cs
- HighlightVisual.cs
- FixedSchema.cs
- PropVariant.cs
- AuthenticationModulesSection.cs
- XmlRawWriterWrapper.cs
- OleDbWrapper.cs
- SqlParameterizer.cs
- HtmlShimManager.cs
- HttpServerVarsCollection.cs
- MasterPageParser.cs
- DependencyPropertyValueSerializer.cs
- FactoryMaker.cs
- ParseChildrenAsPropertiesAttribute.cs
- RewritingPass.cs
- DataGridCellInfo.cs
- ErrorProvider.cs
- BaseTransportHeaders.cs
- Utils.cs
- DocumentGridPage.cs
- CompilerTypeWithParams.cs
- StylusPointProperty.cs
- MetadataItem_Static.cs
- TextServicesManager.cs
- TableRowGroupCollection.cs
- Constraint.cs
- _ListenerResponseStream.cs
- ClientSettingsSection.cs
- CellParaClient.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- ReflectionPermission.cs
- CodeIdentifier.cs
- ResourcePool.cs
- WindowsPrincipal.cs
- connectionpool.cs
- TreeNodeEventArgs.cs
- XamlGridLengthSerializer.cs
- EmptyReadOnlyDictionaryInternal.cs
- ToolZoneDesigner.cs
- FileDialog_Vista.cs
- HierarchicalDataBoundControlAdapter.cs
- SuppressIldasmAttribute.cs
- LinkUtilities.cs
- DefaultBinder.cs
- WinInetCache.cs
- CachedCompositeFamily.cs
- TemplateControlCodeDomTreeGenerator.cs
- StringInfo.cs
- Window.cs
- PriorityQueue.cs
- InvalidPrinterException.cs
- TheQuery.cs
- KeyInfo.cs
- DoubleLinkListEnumerator.cs
- UncommonField.cs
- HttpHeaderCollection.cs
- RoutingChannelExtension.cs
- _UncName.cs
- InterleavedZipPartStream.cs
- GetTokenRequest.cs
- HijriCalendar.cs
- DrawingImage.cs
- BoundPropertyEntry.cs
- TextBoxLine.cs
- OneOfConst.cs
- XsltArgumentList.cs
- ParameterCollection.cs
- OleDbMetaDataFactory.cs
- MethodBody.cs
- _TransmitFileOverlappedAsyncResult.cs
- MethodExpr.cs
- DataSetMappper.cs
- CompressStream.cs
- StrokeDescriptor.cs
- ApplicationInfo.cs
- EventTrigger.cs
- ExpressionPrefixAttribute.cs
- SevenBitStream.cs