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
- FixedDocument.cs
- RtType.cs
- DeploymentSectionCache.cs
- WebUtility.cs
- RemoteWebConfigurationHost.cs
- PathFigureCollectionConverter.cs
- UserPreferenceChangingEventArgs.cs
- LocalServiceSecuritySettingsElement.cs
- Selector.cs
- HttpServerVarsCollection.cs
- UnsafeNativeMethods.cs
- ActivationServices.cs
- DataViewSettingCollection.cs
- BitConverter.cs
- OutKeywords.cs
- IgnoreFlushAndCloseStream.cs
- RadioButtonList.cs
- XmlAttributeOverrides.cs
- NotFiniteNumberException.cs
- XmlDataSourceNodeDescriptor.cs
- IndentTextWriter.cs
- ExtentKey.cs
- BinHexDecoder.cs
- InfocardInteractiveChannelInitializer.cs
- BindableTemplateBuilder.cs
- BindableTemplateBuilder.cs
- prompt.cs
- Decoder.cs
- DbSource.cs
- CellTreeNode.cs
- MappingMetadataHelper.cs
- SelectionProviderWrapper.cs
- ContentValidator.cs
- StringCollection.cs
- UpWmlPageAdapter.cs
- ColumnCollection.cs
- ViewBase.cs
- ClientSession.cs
- EnumUnknown.cs
- CategoryList.cs
- DesignerActionItemCollection.cs
- DesignerActionGlyph.cs
- ClientConfigPaths.cs
- XamlBrushSerializer.cs
- NamespaceInfo.cs
- PresentationAppDomainManager.cs
- EndPoint.cs
- MissingFieldException.cs
- CodeAccessSecurityEngine.cs
- GacUtil.cs
- TemplateField.cs
- dbdatarecord.cs
- FileIOPermission.cs
- ControlParameter.cs
- EntityDataSourceMemberPath.cs
- UserControlCodeDomTreeGenerator.cs
- CoTaskMemHandle.cs
- ProcessInfo.cs
- CursorConverter.cs
- GZipDecoder.cs
- GeneralTransform.cs
- RadioButtonBaseAdapter.cs
- XmlIncludeAttribute.cs
- OlePropertyStructs.cs
- XmlQueryTypeFactory.cs
- Models.cs
- TemplatedWizardStep.cs
- LinkClickEvent.cs
- ImageFormatConverter.cs
- HttpApplicationFactory.cs
- DataGridColumnCollectionEditor.cs
- InputScopeAttribute.cs
- BufferBuilder.cs
- PerformanceCounterScope.cs
- CapabilitiesRule.cs
- XPathPatternParser.cs
- ToolStripControlHost.cs
- FunctionImportMapping.cs
- UdpDiscoveryEndpoint.cs
- GrammarBuilder.cs
- AsymmetricKeyExchangeFormatter.cs
- Thread.cs
- VirtualDirectoryMapping.cs
- OdbcConnectionOpen.cs
- ObjectDisposedException.cs
- CookielessHelper.cs
- SiteOfOriginContainer.cs
- Stylesheet.cs
- Soap12FormatExtensions.cs
- Speller.cs
- _NestedMultipleAsyncResult.cs
- XPathAxisIterator.cs
- Operand.cs
- Dynamic.cs
- ToolStripDropDownClosingEventArgs.cs
- PerformanceCounterPermissionEntry.cs
- TextDecorationCollection.cs
- COM2IDispatchConverter.cs
- Monitor.cs
- FaultContext.cs