Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / OleDb / OleDbEnumerator.cs / 1305376 / 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; public 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; public 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
- FormattedTextSymbols.cs
- XhtmlConformanceSection.cs
- PrefixQName.cs
- ObjectToIdCache.cs
- SafeFileHandle.cs
- ProtocolsSection.cs
- SlotInfo.cs
- WorkflowServiceNamespace.cs
- MetadataWorkspace.cs
- HMACSHA256.cs
- SynchronousChannel.cs
- MruCache.cs
- SerialStream.cs
- Timer.cs
- SafeNativeHandle.cs
- KoreanLunisolarCalendar.cs
- LongValidatorAttribute.cs
- SizeAnimationUsingKeyFrames.cs
- SerializationEventsCache.cs
- Form.cs
- QilSortKey.cs
- StructuredTypeInfo.cs
- Geometry3D.cs
- StrokeNode.cs
- BatchWriter.cs
- Rect3D.cs
- DbConnectionHelper.cs
- XmlDocumentType.cs
- AnchoredBlock.cs
- PointAnimationClockResource.cs
- ValueExpressions.cs
- ListMarkerLine.cs
- EFDataModelProvider.cs
- Int32Animation.cs
- ListItemCollection.cs
- XmlSchemaInferenceException.cs
- EditorReuseAttribute.cs
- GridViewRowEventArgs.cs
- ECDsa.cs
- CategoriesDocument.cs
- CheckBoxPopupAdapter.cs
- ValidationHelper.cs
- ExtensionDataReader.cs
- BuildTopDownAttribute.cs
- serverconfig.cs
- ToolZone.cs
- HtmlMobileTextWriter.cs
- InputScopeAttribute.cs
- CodeValidator.cs
- TypeLibConverter.cs
- HttpChannelListener.cs
- ArgumentOutOfRangeException.cs
- QilPatternVisitor.cs
- LongAverageAggregationOperator.cs
- Evidence.cs
- PartitionedStreamMerger.cs
- CodeTypeOfExpression.cs
- oledbconnectionstring.cs
- WebColorConverter.cs
- DataPagerFieldItem.cs
- DoubleAnimationUsingPath.cs
- GraphicsPathIterator.cs
- SspiSecurityToken.cs
- ContentPosition.cs
- ProgressBarAutomationPeer.cs
- ServiceProviders.cs
- PackageStore.cs
- ListSortDescription.cs
- DataGridViewCheckBoxColumn.cs
- ListSortDescription.cs
- MessagePartDescriptionCollection.cs
- ToolStripDesigner.cs
- EntityUtil.cs
- SafeArrayTypeMismatchException.cs
- TableHeaderCell.cs
- DataGridViewCellFormattingEventArgs.cs
- FSWPathEditor.cs
- ISFTagAndGuidCache.cs
- Point3DCollectionValueSerializer.cs
- SqlExpressionNullability.cs
- TypeConverterAttribute.cs
- InstanceKeyCompleteException.cs
- PtsHelper.cs
- RunWorkerCompletedEventArgs.cs
- UrlMappingsModule.cs
- EntityDataSourceUtil.cs
- MdiWindowListItemConverter.cs
- AccessedThroughPropertyAttribute.cs
- XmlValidatingReaderImpl.cs
- Parallel.cs
- DynamicRenderer.cs
- BackgroundWorker.cs
- XmlnsDictionary.cs
- ModuleBuilder.cs
- EntityDesignerBuildProvider.cs
- DataObjectCopyingEventArgs.cs
- Bezier.cs
- Pkcs7Recipient.cs
- DataColumn.cs
- ConnectionConsumerAttribute.cs