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
- LinqDataSourceContextEventArgs.cs
- EmptyEnumerator.cs
- SelectionRange.cs
- Int64.cs
- Exceptions.cs
- PolicyChain.cs
- TransactionManagerProxy.cs
- MetafileHeader.cs
- TypeUtils.cs
- SizeAnimationUsingKeyFrames.cs
- DiscoveryDocumentSerializer.cs
- DeferredReference.cs
- ToolboxItemAttribute.cs
- DataGridViewIntLinkedList.cs
- SmiEventSink.cs
- KeyValueConfigurationElement.cs
- RegionInfo.cs
- DBBindings.cs
- RuleSettingsCollection.cs
- SystemColors.cs
- DesignRelationCollection.cs
- SoapTypeAttribute.cs
- QuaternionKeyFrameCollection.cs
- TargetParameterCountException.cs
- FormViewInsertedEventArgs.cs
- AbstractSvcMapFileLoader.cs
- InvalidPrinterException.cs
- AppDomainProtocolHandler.cs
- NewArrayExpression.cs
- DataGridCommandEventArgs.cs
- UnsafeNativeMethods.cs
- smtppermission.cs
- VirtualPathUtility.cs
- PropertyGeneratedEventArgs.cs
- SqlDataReaderSmi.cs
- DesigntimeLicenseContext.cs
- EndpointDiscoveryMetadata11.cs
- DataGridViewCell.cs
- Model3DGroup.cs
- Journal.cs
- ObjectListCommandEventArgs.cs
- SQLDouble.cs
- LiteralDesigner.cs
- ListItem.cs
- userdatakeys.cs
- DataGridViewCellCollection.cs
- SqlDataReaderSmi.cs
- DocumentXmlWriter.cs
- WindowsListViewGroup.cs
- AttachedPropertyDescriptor.cs
- ContextMenuAutomationPeer.cs
- Border.cs
- Type.cs
- LocatorManager.cs
- OleDbDataReader.cs
- ScriptControl.cs
- BufferedGraphics.cs
- QuaternionValueSerializer.cs
- AddInSegmentDirectoryNotFoundException.cs
- XDRSchema.cs
- CompilerGlobalScopeAttribute.cs
- BufferBuilder.cs
- Win32SafeHandles.cs
- Attributes.cs
- CodeGen.cs
- StrokeCollectionConverter.cs
- AutoResetEvent.cs
- __Filters.cs
- ActivityTypeResolver.xaml.cs
- CryptoApi.cs
- AppDomainFactory.cs
- _DisconnectOverlappedAsyncResult.cs
- TemplateModeChangedEventArgs.cs
- DataPagerFieldItem.cs
- EntityModelBuildProvider.cs
- ImageAnimator.cs
- FreezableCollection.cs
- Figure.cs
- TextEditor.cs
- NGCSerializationManagerAsync.cs
- MSAAWinEventWrap.cs
- MetadataCollection.cs
- ImageSourceConverter.cs
- DictionaryGlobals.cs
- BaseWebProxyFinder.cs
- TextWriterTraceListener.cs
- PersonalizationEntry.cs
- DocumentViewerBaseAutomationPeer.cs
- AppliedDeviceFiltersDialog.cs
- ComplexTypeEmitter.cs
- DescriptionAttribute.cs
- ReadOnlyTernaryTree.cs
- RoutedUICommand.cs
- DataTablePropertyDescriptor.cs
- Polyline.cs
- TransformerConfigurationWizardBase.cs
- DuplexSecurityProtocolFactory.cs
- DocumentViewerHelper.cs
- ClientScriptManagerWrapper.cs
- WebServiceTypeData.cs