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
- PropertyDescriptorComparer.cs
- TextEndOfSegment.cs
- WebBrowsableAttribute.cs
- XMLDiffLoader.cs
- ByteAnimationUsingKeyFrames.cs
- HtmlInputReset.cs
- HttpFileCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- Timer.cs
- FunctionQuery.cs
- CompilationUnit.cs
- HttpProfileBase.cs
- MobileCategoryAttribute.cs
- WindowsAuthenticationModule.cs
- HijriCalendar.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- DebugHandleTracker.cs
- ProxySimple.cs
- ConvertersCollection.cs
- UnhandledExceptionEventArgs.cs
- DbConnectionStringBuilder.cs
- DesignerCategoryAttribute.cs
- SqlInternalConnection.cs
- PerformanceCounterCategory.cs
- EventLogPermissionAttribute.cs
- FragmentNavigationEventArgs.cs
- X509IssuerSerialKeyIdentifierClause.cs
- MemoryFailPoint.cs
- NumericUpDownAcceleration.cs
- ConstraintEnumerator.cs
- ItemsPanelTemplate.cs
- Authorization.cs
- ValidationRuleCollection.cs
- WebScriptMetadataMessageEncoderFactory.cs
- HttpRawResponse.cs
- DocumentCollection.cs
- Operators.cs
- RegionData.cs
- TempEnvironment.cs
- SchemaTableColumn.cs
- AdornerLayer.cs
- SystemPens.cs
- MeshGeometry3D.cs
- ByteKeyFrameCollection.cs
- PageCodeDomTreeGenerator.cs
- DbConnectionPoolGroupProviderInfo.cs
- DataGridViewSelectedColumnCollection.cs
- Image.cs
- WorkflowPersistenceService.cs
- SourceFileInfo.cs
- RotateTransform3D.cs
- QueryableFilterRepeater.cs
- TransformedBitmap.cs
- QilFactory.cs
- DateTimeStorage.cs
- SiteMapDataSource.cs
- CodeEntryPointMethod.cs
- ListenerConnectionModeReader.cs
- TextSelectionHighlightLayer.cs
- TextEditor.cs
- IntranetCredentialPolicy.cs
- EditingMode.cs
- PageCatalogPart.cs
- ContainerUtilities.cs
- AsyncResult.cs
- Object.cs
- NavigationEventArgs.cs
- DefaultDialogButtons.cs
- MenuItemAutomationPeer.cs
- TextEffectCollection.cs
- GeneralTransform3DTo2DTo3D.cs
- SmiGettersStream.cs
- ListMarkerSourceInfo.cs
- TransformerInfo.cs
- ReadOnlyDataSource.cs
- LogArchiveSnapshot.cs
- _emptywebproxy.cs
- RadioButtonPopupAdapter.cs
- OdbcException.cs
- RequestQueue.cs
- MetadataPropertyvalue.cs
- InputLangChangeEvent.cs
- XmlDocumentSerializer.cs
- TextEndOfLine.cs
- SqlDataSourceDesigner.cs
- MenuStrip.cs
- FormViewActionList.cs
- Stroke.cs
- ComNativeDescriptor.cs
- DBDataPermissionAttribute.cs
- CanonicalFormWriter.cs
- Page.cs
- ContainerControl.cs
- SamlAuthorizationDecisionClaimResource.cs
- XmlLanguage.cs
- COMException.cs
- SettingsBindableAttribute.cs
- ReadOnlyHierarchicalDataSource.cs
- _DomainName.cs
- SHA384Managed.cs