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
- LinqDataSourceValidationException.cs
- GridItemPatternIdentifiers.cs
- WasHostedComPlusFactory.cs
- ModelTreeEnumerator.cs
- DebugManager.cs
- ViewManager.cs
- ProcessHost.cs
- ProvideValueServiceProvider.cs
- XmlUTF8TextReader.cs
- GridToolTip.cs
- PropertyMap.cs
- ChooseAction.cs
- WebDescriptionAttribute.cs
- ToolStripComboBox.cs
- ResourceSet.cs
- ToolStripDropDownMenu.cs
- UserInitiatedNavigationPermission.cs
- BooleanAnimationBase.cs
- ReadWriteObjectLock.cs
- ConditionalBranch.cs
- CategoryAttribute.cs
- LogicalExpr.cs
- ConfigXmlText.cs
- DataGridViewCheckBoxColumn.cs
- ElapsedEventArgs.cs
- Pen.cs
- CacheRequest.cs
- RunInstallerAttribute.cs
- FrameworkElementAutomationPeer.cs
- DeviceContexts.cs
- ProgressBarBrushConverter.cs
- XmlSchemaComplexContentExtension.cs
- CompareInfo.cs
- FamilyMapCollection.cs
- CompositeActivityMarkupSerializer.cs
- ProviderConnectionPoint.cs
- StringPropertyBuilder.cs
- Animatable.cs
- FixUp.cs
- SqlTrackingQuery.cs
- DataGridViewComboBoxCell.cs
- Table.cs
- TypeDelegator.cs
- LambdaCompiler.Address.cs
- SafeNativeMemoryHandle.cs
- LicenseException.cs
- MetadataItem.cs
- RectAnimationBase.cs
- SqlDataAdapter.cs
- MetadataUtil.cs
- ScrollItemPattern.cs
- ViewGenResults.cs
- ExpressionBindingCollection.cs
- OdbcInfoMessageEvent.cs
- DataException.cs
- _DigestClient.cs
- ProtocolsSection.cs
- WebWorkflowRole.cs
- PassportAuthenticationModule.cs
- XmlSchemaGroup.cs
- KeyEvent.cs
- XmlBoundElement.cs
- Codec.cs
- IsolatedStorageException.cs
- WebPartConnectVerb.cs
- SpinLock.cs
- ScrollChrome.cs
- QilFactory.cs
- FixedSOMTableCell.cs
- DataListAutoFormat.cs
- SignatureHelper.cs
- FunctionQuery.cs
- mda.cs
- SmiGettersStream.cs
- DataSourceExpression.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- FocusChangedEventArgs.cs
- ProxyFragment.cs
- HttpDigestClientElement.cs
- CheckBoxBaseAdapter.cs
- Msec.cs
- MdiWindowListItemConverter.cs
- StrongNameUtility.cs
- SymbolType.cs
- KeyTimeConverter.cs
- QueuePathEditor.cs
- HtmlTextViewAdapter.cs
- DirectoryGroupQuery.cs
- HostAdapter.cs
- WindowsHyperlink.cs
- ProtocolViolationException.cs
- CommandField.cs
- WithParamAction.cs
- DesignerAutoFormatCollection.cs
- CodeArrayCreateExpression.cs
- Bits.cs
- DeclaredTypeElement.cs
- ListBase.cs
- CfgParser.cs
- DPAPIProtectedConfigurationProvider.cs