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
- JsonClassDataContract.cs
- RSAPKCS1KeyExchangeFormatter.cs
- PlatformNotSupportedException.cs
- WindowsTokenRoleProvider.cs
- TextDecorationUnitValidation.cs
- Image.cs
- CompilerGlobalScopeAttribute.cs
- DataGridComponentEditor.cs
- ErrorInfoXmlDocument.cs
- BamlVersionHeader.cs
- ToolStripItemImageRenderEventArgs.cs
- SecurityPolicySection.cs
- NativeMethods.cs
- X509PeerCertificateElement.cs
- Regex.cs
- CachedCompositeFamily.cs
- DotExpr.cs
- ScriptResourceHandler.cs
- UnsafeNativeMethods.cs
- StringArrayConverter.cs
- WebPartAddingEventArgs.cs
- DataGridViewRow.cs
- MultitargetingHelpers.cs
- XmlCDATASection.cs
- securitycriticaldata.cs
- oledbmetadatacollectionnames.cs
- RoleService.cs
- DataGridViewColumnConverter.cs
- EqualityComparer.cs
- TableColumnCollectionInternal.cs
- CharEnumerator.cs
- SafeHandles.cs
- SingleStorage.cs
- EntityDataSourceContextCreatingEventArgs.cs
- DataGridViewRowHeaderCell.cs
- DesignerAutoFormat.cs
- QilList.cs
- ManagementPath.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- Win32MouseDevice.cs
- GregorianCalendar.cs
- LongCountAggregationOperator.cs
- OracleNumber.cs
- SourceFileBuildProvider.cs
- EffectiveValueEntry.cs
- ZipIOExtraField.cs
- Partitioner.cs
- SQLGuidStorage.cs
- Message.cs
- CodeArgumentReferenceExpression.cs
- Panel.cs
- ObjectPropertyMapping.cs
- DocumentViewerBase.cs
- IProvider.cs
- CanonicalFontFamilyReference.cs
- PasswordPropertyTextAttribute.cs
- PageHandlerFactory.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- ContentFileHelper.cs
- AuthenticatedStream.cs
- Vector3DConverter.cs
- DbConnectionPool.cs
- BufferedGenericXmlSecurityToken.cs
- XamlHostingConfiguration.cs
- DeviceContext.cs
- SqlException.cs
- WasHttpHandlersInstallComponent.cs
- X509CertificateValidationMode.cs
- ContentDisposition.cs
- ChannelReliableSession.cs
- GlobalizationAssembly.cs
- FixedSchema.cs
- DateTimeUtil.cs
- ResolveNameEventArgs.cs
- QilSortKey.cs
- TextSchema.cs
- EntityStoreSchemaGenerator.cs
- FontFamily.cs
- ScriptMethodAttribute.cs
- MenuItemStyleCollection.cs
- Hash.cs
- ChildChangedEventArgs.cs
- MethodCallTranslator.cs
- AutoGeneratedFieldProperties.cs
- StringResourceManager.cs
- ToolStripTextBox.cs
- MeshGeometry3D.cs
- TextFormatterHost.cs
- ToolStripActionList.cs
- PenThreadWorker.cs
- OrderedHashRepartitionEnumerator.cs
- ControlPager.cs
- VisualTreeHelper.cs
- PropertyChangeTracker.cs
- DataBindingHandlerAttribute.cs
- HandleTable.cs
- TrackingLocation.cs
- EdgeModeValidation.cs
- ApplicationDirectoryMembershipCondition.cs
- ConfigurationSectionGroupCollection.cs