Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- GridViewHeaderRowPresenterAutomationPeer.cs
- ThaiBuddhistCalendar.cs
- GcSettings.cs
- QueueProcessor.cs
- RenderingBiasValidation.cs
- AudioException.cs
- TypeToStringValueConverter.cs
- SimpleType.cs
- Oid.cs
- CalendarBlackoutDatesCollection.cs
- XmlDomTextWriter.cs
- DataServiceQueryOfT.cs
- TypeDelegator.cs
- SchemaEntity.cs
- DataGridViewCell.cs
- EndpointReference.cs
- DataGridState.cs
- MsmqDiagnostics.cs
- FormViewInsertEventArgs.cs
- MappingItemCollection.cs
- __FastResourceComparer.cs
- RoleBoolean.cs
- ControlValuePropertyAttribute.cs
- LinkConverter.cs
- FileChangeNotifier.cs
- MultiAsyncResult.cs
- NativeMethods.cs
- Conditional.cs
- CodePageUtils.cs
- StreamUpdate.cs
- Polyline.cs
- XmlWrappingWriter.cs
- Attributes.cs
- CodeExpressionStatement.cs
- ProcessInfo.cs
- CustomTrackingQuery.cs
- BitmapEffect.cs
- OciEnlistContext.cs
- AssemblyCollection.cs
- _BaseOverlappedAsyncResult.cs
- FixedSOMPageConstructor.cs
- AvTrace.cs
- CountAggregationOperator.cs
- DataControlFieldCell.cs
- SessionPageStateSection.cs
- ApplicationBuildProvider.cs
- IHttpResponseInternal.cs
- TextSelectionHelper.cs
- BamlReader.cs
- MetadataWorkspace.cs
- DateTimeValueSerializer.cs
- QueuePathEditor.cs
- RepeatButtonAutomationPeer.cs
- BitmapSource.cs
- FontConverter.cs
- SchemaConstraints.cs
- TypeContext.cs
- CommonDialog.cs
- TreeNodeCollectionEditor.cs
- AlphabeticalEnumConverter.cs
- FtpWebResponse.cs
- ClonableStack.cs
- sqlinternaltransaction.cs
- AsyncResult.cs
- XmlSerializerAssemblyAttribute.cs
- CheckoutException.cs
- GeometryCombineModeValidation.cs
- IPHostEntry.cs
- WinHttpWebProxyFinder.cs
- KerberosSecurityTokenProvider.cs
- TableRow.cs
- RawStylusInputCustomDataList.cs
- Interlocked.cs
- ObjectQuery.cs
- DataColumnMapping.cs
- Size3DConverter.cs
- IisTraceWebEventProvider.cs
- Geometry.cs
- RootAction.cs
- ExpressionNormalizer.cs
- ProfileSettings.cs
- RadioButtonBaseAdapter.cs
- UIPermission.cs
- DataGridViewComboBoxCell.cs
- RuntimeConfig.cs
- TraceHelpers.cs
- TextContainerHelper.cs
- Section.cs
- TextSyndicationContentKindHelper.cs
- Itemizer.cs
- MailAddressCollection.cs
- SoapHeaders.cs
- XamlClipboardData.cs
- ListItemConverter.cs
- ResourceManager.cs
- WebBaseEventKeyComparer.cs
- SoapAttributes.cs
- GenericParameterDataContract.cs
- IssuanceTokenProviderBase.cs
- assemblycache.cs