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
- DbCommandTree.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- XmlSchemaInclude.cs
- UICuesEvent.cs
- MatrixAnimationBase.cs
- SqlWriter.cs
- Attribute.cs
- PersonalizationEntry.cs
- XslVisitor.cs
- CompositionAdorner.cs
- BitmapEffectInputData.cs
- TraceInternal.cs
- Vector3DAnimation.cs
- BooleanFacetDescriptionElement.cs
- SystemEvents.cs
- HostedNamedPipeTransportManager.cs
- HttpHandlersSection.cs
- Timer.cs
- BufferedStream2.cs
- DataGridState.cs
- SchemaImporterExtensionElement.cs
- TextServicesPropertyRanges.cs
- UniqueConstraint.cs
- NegotiateStream.cs
- ConfigWriter.cs
- SrgsDocumentParser.cs
- DispatcherHooks.cs
- SqlDataSource.cs
- rsa.cs
- BamlVersionHeader.cs
- InkCanvasInnerCanvas.cs
- ValueOfAction.cs
- PropertyEmitter.cs
- SecurityElement.cs
- PrtTicket_Public.cs
- ColumnPropertiesGroup.cs
- SoapCodeExporter.cs
- Switch.cs
- DataConnectionHelper.cs
- StatusBar.cs
- MailMessage.cs
- RegexBoyerMoore.cs
- ReflectionServiceProvider.cs
- LogManagementAsyncResult.cs
- FindResponse.cs
- BaseInfoTable.cs
- TabPage.cs
- Dispatcher.cs
- ConfigurationValue.cs
- ClientConfigPaths.cs
- DefaultSerializationProviderAttribute.cs
- ExpressionBuilderCollection.cs
- UniformGrid.cs
- FormViewPageEventArgs.cs
- TreeIterators.cs
- ProcessStartInfo.cs
- SoapReflectionImporter.cs
- WebColorConverter.cs
- SmiContextFactory.cs
- DesignerAttribute.cs
- DataMisalignedException.cs
- DataGridViewCellStyleChangedEventArgs.cs
- AsymmetricSignatureDeformatter.cs
- NativeObjectSecurity.cs
- FileLogRecord.cs
- WorkflowCommandExtensionItem.cs
- SelectiveScrollingGrid.cs
- ListDataHelper.cs
- DBConcurrencyException.cs
- CodeTypeParameter.cs
- DataColumnMappingCollection.cs
- SafeHandles.cs
- NullRuntimeConfig.cs
- CodeTypeOfExpression.cs
- TerminateWorkflow.cs
- MtomMessageEncoder.cs
- StreamingContext.cs
- TraceHwndHost.cs
- HashJoinQueryOperatorEnumerator.cs
- TiffBitmapDecoder.cs
- TextDecoration.cs
- TextBounds.cs
- BinHexEncoding.cs
- FragmentQueryProcessor.cs
- WebBrowserDocumentCompletedEventHandler.cs
- CommandManager.cs
- CSharpCodeProvider.cs
- SchemaAttDef.cs
- RequestBringIntoViewEventArgs.cs
- SizeIndependentAnimationStorage.cs
- GacUtil.cs
- ColorMatrix.cs
- ConnectionsZone.cs
- DesignerActionVerbList.cs
- DocComment.cs
- ResourceDisplayNameAttribute.cs
- EntityCommandDefinition.cs
- WebServiceErrorEvent.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- RotateTransform.cs