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
- RowToParametersTransformer.cs
- ScrollPattern.cs
- CollectionConverter.cs
- EDesignUtil.cs
- XamlGridLengthSerializer.cs
- AddInSegmentDirectoryNotFoundException.cs
- HtmlHistory.cs
- StylusPointPropertyUnit.cs
- InputScopeAttribute.cs
- FormParameter.cs
- RangeBase.cs
- Attachment.cs
- ChannelFactoryBase.cs
- Int32RectValueSerializer.cs
- ArrayElementGridEntry.cs
- AuthenticationManager.cs
- EffectiveValueEntry.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- HttpModuleCollection.cs
- CertificateReferenceElement.cs
- GridPatternIdentifiers.cs
- Lookup.cs
- BufferedResponseStream.cs
- AdditionalEntityFunctions.cs
- SecurityHelper.cs
- AssemblyAttributes.cs
- LicenseException.cs
- ObservableCollection.cs
- XPathBinder.cs
- _LoggingObject.cs
- InstanceBehavior.cs
- ActiveDocumentEvent.cs
- RuleSettings.cs
- UnicodeEncoding.cs
- MenuItem.cs
- PointValueSerializer.cs
- AccessibleObject.cs
- ProxyHwnd.cs
- CodeExpressionStatement.cs
- Int16Converter.cs
- Debugger.cs
- DataMemberConverter.cs
- GZipDecoder.cs
- TableCell.cs
- MultiPropertyDescriptorGridEntry.cs
- EntityClassGenerator.cs
- ManifestBasedResourceGroveler.cs
- ConstraintConverter.cs
- IntegerValidator.cs
- ResourceWriter.cs
- AutomationIdentifier.cs
- TrackBar.cs
- PageTheme.cs
- EditorAttribute.cs
- Part.cs
- DataErrorValidationRule.cs
- EventMappingSettings.cs
- LostFocusEventManager.cs
- SQLConvert.cs
- SelectionItemPatternIdentifiers.cs
- TextElementAutomationPeer.cs
- InternalEnumValidator.cs
- EventWaitHandleSecurity.cs
- XmlCharType.cs
- HtmlElement.cs
- HtmlShim.cs
- WebHeaderCollection.cs
- UrlMappingsModule.cs
- SqlErrorCollection.cs
- Quaternion.cs
- CombinedGeometry.cs
- ColorContextHelper.cs
- Types.cs
- ObjectReferenceStack.cs
- DbConnectionStringBuilder.cs
- safex509handles.cs
- DefaultShape.cs
- SeekableReadStream.cs
- ControlPaint.cs
- ImportOptions.cs
- ContextDataSourceView.cs
- FormViewCommandEventArgs.cs
- IRCollection.cs
- FirstQueryOperator.cs
- FixedDocumentSequencePaginator.cs
- OracleLob.cs
- ParsedRoute.cs
- CFStream.cs
- SecureConversationSecurityTokenParameters.cs
- WindowsHyperlink.cs
- CngAlgorithm.cs
- IsolatedStorageFile.cs
- XmlUnspecifiedAttribute.cs
- CodeSnippetTypeMember.cs
- HostedHttpRequestAsyncResult.cs
- SoapAttributeOverrides.cs
- SetStateDesigner.cs
- RuntimeConfigLKG.cs
- PrintEvent.cs
- DbConnectionPoolCounters.cs