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
- FirstMatchCodeGroup.cs
- XmlDocumentType.cs
- CodeTryCatchFinallyStatement.cs
- RC2.cs
- DefaultBindingPropertyAttribute.cs
- BindingValueChangedEventArgs.cs
- MailAddress.cs
- ColorComboBox.cs
- KeyboardEventArgs.cs
- TrackBarRenderer.cs
- EntityDesignerUtils.cs
- SecurityPermission.cs
- RegexCharClass.cs
- BindingManagerDataErrorEventArgs.cs
- NotifyParentPropertyAttribute.cs
- RMEnrollmentPage3.cs
- FileRecordSequenceHelper.cs
- FixedSOMContainer.cs
- StringInfo.cs
- RewritingProcessor.cs
- EntityConnectionStringBuilder.cs
- DragDropManager.cs
- DataRowChangeEvent.cs
- controlskin.cs
- FreezableDefaultValueFactory.cs
- streamingZipPartStream.cs
- ImageAttributes.cs
- XmlSchemaGroup.cs
- CodeRemoveEventStatement.cs
- IgnoreFlushAndCloseStream.cs
- WizardStepBase.cs
- ZoomPercentageConverter.cs
- ViewStateException.cs
- ConstraintConverter.cs
- ResourceDisplayNameAttribute.cs
- SmtpClient.cs
- RestHandlerFactory.cs
- Root.cs
- TrueReadOnlyCollection.cs
- GridViewColumnCollection.cs
- FixedSOMTable.cs
- MarkupExtensionParser.cs
- XamlWriter.cs
- DataServiceProviderWrapper.cs
- TransactionFlowElement.cs
- XPathItem.cs
- MinMaxParagraphWidth.cs
- ClipboardProcessor.cs
- XPathItem.cs
- HtmlInputRadioButton.cs
- BamlReader.cs
- COM2PropertyDescriptor.cs
- GraphicsPathIterator.cs
- PageWrapper.cs
- EditorZoneBase.cs
- AuthenticationManager.cs
- Int16Animation.cs
- Column.cs
- TimerEventSubscription.cs
- GridLength.cs
- ListControlActionList.cs
- IndexOutOfRangeException.cs
- TogglePattern.cs
- RootNamespaceAttribute.cs
- XmlSchemaComplexContentExtension.cs
- NotFiniteNumberException.cs
- securitycriticaldataClass.cs
- DetailsViewInsertedEventArgs.cs
- ComponentFactoryHelpers.cs
- SchemeSettingElement.cs
- MatrixCamera.cs
- LocalizationComments.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- AllMembershipCondition.cs
- processwaithandle.cs
- CustomExpression.cs
- DataGridViewComboBoxColumn.cs
- XmlQueryStaticData.cs
- HttpHandlersSection.cs
- XmlQueryRuntime.cs
- ExpressionEditorAttribute.cs
- MdbDataFileEditor.cs
- ConnectionStringsExpressionEditor.cs
- GeometryDrawing.cs
- HttpResponseWrapper.cs
- AudioException.cs
- GPStream.cs
- ValidationRule.cs
- ListDesigner.cs
- PropVariant.cs
- cookiecollection.cs
- TableCell.cs
- DocumentXPathNavigator.cs
- AutomationPeer.cs
- ListChangedEventArgs.cs
- AssemblyCollection.cs
- TabletDeviceInfo.cs
- RelationshipManager.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- UrlRoutingHandler.cs