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
- ArrangedElementCollection.cs
- VersionedStream.cs
- WindowsToolbarAsMenu.cs
- EntityDataSourceMemberPath.cs
- JsonServiceDocumentSerializer.cs
- SizeChangedEventArgs.cs
- SendMessageRecord.cs
- BatchParser.cs
- DesignTimeType.cs
- entitydatasourceentitysetnameconverter.cs
- TitleStyle.cs
- XPathParser.cs
- KeyedByTypeCollection.cs
- BaseResourcesBuildProvider.cs
- SimpleRecyclingCache.cs
- ProtocolsConfiguration.cs
- PolicyManager.cs
- ArgumentOutOfRangeException.cs
- IInstanceTable.cs
- ButtonFlatAdapter.cs
- ErrorHandlerModule.cs
- XPathAxisIterator.cs
- BufferedStream.cs
- NamespaceEmitter.cs
- SqlFunctionAttribute.cs
- RectangleHotSpot.cs
- TextTreeText.cs
- TagPrefixInfo.cs
- EpmSourceTree.cs
- SelectorAutomationPeer.cs
- TransformPattern.cs
- PersonalizableAttribute.cs
- HtmlInputImage.cs
- Lasso.cs
- ColorConvertedBitmapExtension.cs
- CultureTableRecord.cs
- TextUtf8RawTextWriter.cs
- BoolLiteral.cs
- PropertyMappingExceptionEventArgs.cs
- SoapAttributeOverrides.cs
- OleDbTransaction.cs
- InkCanvasSelection.cs
- StringStorage.cs
- XmlIlTypeHelper.cs
- ExpandCollapseProviderWrapper.cs
- IdentifierElement.cs
- StylusButton.cs
- BatchParser.cs
- OutgoingWebResponseContext.cs
- AssemblyBuilder.cs
- FileDialog_Vista_Interop.cs
- SqlBinder.cs
- GridViewRow.cs
- DataControlFieldHeaderCell.cs
- MultiAsyncResult.cs
- ScriptReferenceBase.cs
- OwnerDrawPropertyBag.cs
- AQNBuilder.cs
- DataGridViewRowPostPaintEventArgs.cs
- AnnotationService.cs
- Point3DCollectionValueSerializer.cs
- ListBox.cs
- SqlBooleanizer.cs
- TemplateNameScope.cs
- Memoizer.cs
- Speller.cs
- SimpleMailWebEventProvider.cs
- unsafenativemethodstextservices.cs
- NameTable.cs
- PersianCalendar.cs
- XmlQualifiedNameTest.cs
- ButtonBase.cs
- TransactionInformation.cs
- SHA512.cs
- DiscoveryClientDuplexChannel.cs
- AmbiguousMatchException.cs
- Expression.cs
- Win32.cs
- HttpFileCollection.cs
- BitArray.cs
- DataGridViewColumnCollection.cs
- ServiceDescriptionContext.cs
- SQLDouble.cs
- ServiceDescription.cs
- EventBuilder.cs
- FieldDescriptor.cs
- HwndStylusInputProvider.cs
- PersonalizableAttribute.cs
- WorkflowMarkupSerializerMapping.cs
- Psha1DerivedKeyGeneratorHelper.cs
- ToolStripPanelDesigner.cs
- UrlUtility.cs
- SystemGatewayIPAddressInformation.cs
- DetailsViewDeleteEventArgs.cs
- SQLMembershipProvider.cs
- COAUTHIDENTITY.cs
- MouseDevice.cs
- PropertyDescriptorCollection.cs
- HttpModuleActionCollection.cs
- StorageSetMapping.cs