Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- SqlInfoMessageEvent.cs
- ProxyWebPartConnectionCollection.cs
- WebPartCatalogCloseVerb.cs
- SqlCaseSimplifier.cs
- ConfigurationValues.cs
- OracleBinary.cs
- DbConnectionPoolIdentity.cs
- FullTextBreakpoint.cs
- ProfileSettingsCollection.cs
- SafeUserTokenHandle.cs
- Model3D.cs
- SharedDp.cs
- _ProxyChain.cs
- _PooledStream.cs
- SoapCommonClasses.cs
- HtmlSelect.cs
- ResourceManagerWrapper.cs
- PerspectiveCamera.cs
- ISAPIRuntime.cs
- ReadOnlyDataSourceView.cs
- ExtensionDataObject.cs
- SiteMapNodeItem.cs
- documentation.cs
- VisualBasicImportReference.cs
- _NestedMultipleAsyncResult.cs
- SafeNativeMethodsOther.cs
- IisTraceListener.cs
- GlobalizationSection.cs
- Int64Animation.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- IndexedGlyphRun.cs
- CoTaskMemHandle.cs
- ZipPackage.cs
- XmlUTF8TextReader.cs
- MetadataHelper.cs
- PointHitTestParameters.cs
- UnrecognizedPolicyAssertionElement.cs
- MetadataReference.cs
- ExtendedPropertyInfo.cs
- ExpressionBuilder.cs
- ConfigXmlComment.cs
- BamlReader.cs
- xml.cs
- RoleManagerEventArgs.cs
- BufferedStream.cs
- ConfigurationStrings.cs
- OrderablePartitioner.cs
- baseaxisquery.cs
- OdbcConnection.cs
- DbConnectionClosed.cs
- TextStore.cs
- ServiceNotStartedException.cs
- ListItemParagraph.cs
- ViewGenResults.cs
- IdentityReference.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- AccessDataSourceView.cs
- SocketInformation.cs
- ControlCollection.cs
- ListViewInsertedEventArgs.cs
- BaseConfigurationRecord.cs
- ImportCatalogPart.cs
- ImageBrush.cs
- TableItemProviderWrapper.cs
- DeviceContext.cs
- SymLanguageVendor.cs
- PropertiesTab.cs
- CalendarDesigner.cs
- SqlCommandSet.cs
- PropertyDescriptorComparer.cs
- ParameterToken.cs
- BrowserCapabilitiesFactory35.cs
- TypeUnloadedException.cs
- UnsafeMethods.cs
- Helper.cs
- ExternalException.cs
- DoubleLink.cs
- Bind.cs
- ButtonBase.cs
- LeaseManager.cs
- DocumentSignatureManager.cs
- KeySplineConverter.cs
- XamlClipboardData.cs
- NamedPermissionSet.cs
- TimeoutValidationAttribute.cs
- Menu.cs
- LinqDataSourceDeleteEventArgs.cs
- UnauthorizedAccessException.cs
- WebPartDescriptionCollection.cs
- AdornerDecorator.cs
- HttpListenerResponse.cs
- WsatServiceCertificate.cs
- XD.cs
- OracleConnectionFactory.cs
- NativeMethods.cs
- Menu.cs
- WinEventWrap.cs
- VectorAnimationUsingKeyFrames.cs
- InvalidFilterCriteriaException.cs
- WebScriptMetadataFormatter.cs