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
- XmlFormatWriterGenerator.cs
- BindingExpression.cs
- DataSourceControl.cs
- ListCollectionView.cs
- RelationshipEndCollection.cs
- XmlHierarchyData.cs
- dbdatarecord.cs
- ChildrenQuery.cs
- ClientSession.cs
- LayoutUtils.cs
- RegexRunner.cs
- ErrorProvider.cs
- XMLSyntaxException.cs
- DownloadProgressEventArgs.cs
- SamlAttribute.cs
- Wrapper.cs
- RuntimeIdentifierPropertyAttribute.cs
- DeclarativeExpressionConditionDeclaration.cs
- DateTimeConverter2.cs
- EntityDataSourceChangedEventArgs.cs
- CodeSnippetExpression.cs
- TextControlDesigner.cs
- MessageLogTraceRecord.cs
- CacheChildrenQuery.cs
- WebCategoryAttribute.cs
- SortQueryOperator.cs
- TextSelectionProcessor.cs
- ChildTable.cs
- PersonalizableAttribute.cs
- DesignerTransactionCloseEvent.cs
- DataRow.cs
- ToolStripDropDownItemDesigner.cs
- UnrecognizedPolicyAssertionElement.cs
- WebServiceHandler.cs
- MethodInfo.cs
- SignatureDescription.cs
- SessionStateUtil.cs
- SQLDoubleStorage.cs
- KerberosTokenFactoryCredential.cs
- MsiStyleLogWriter.cs
- ActivityDesignerLayoutSerializers.cs
- LineServicesRun.cs
- WebHttpSecurity.cs
- DiscreteKeyFrames.cs
- Math.cs
- DeviceContext2.cs
- InstanceContextMode.cs
- CodeCompiler.cs
- HandlerWithFactory.cs
- MembershipUser.cs
- StaticFileHandler.cs
- ProxyAttribute.cs
- CookieParameter.cs
- NotImplementedException.cs
- OdbcErrorCollection.cs
- CaseExpr.cs
- DefaultTextStoreTextComposition.cs
- UntrustedRecipientException.cs
- DesignTimeValidationFeature.cs
- XmlMtomReader.cs
- SqlInternalConnectionSmi.cs
- WindowVisualStateTracker.cs
- RegularExpressionValidator.cs
- FontCollection.cs
- SharedPerformanceCounter.cs
- StorageModelBuildProvider.cs
- LicenseException.cs
- XComponentModel.cs
- DataGridViewRowsAddedEventArgs.cs
- GcSettings.cs
- Part.cs
- AppDomainShutdownMonitor.cs
- InfoCardArgumentException.cs
- XmlAttribute.cs
- TextServicesContext.cs
- _ScatterGatherBuffers.cs
- DesignColumnCollection.cs
- ScriptControlManager.cs
- InputLanguageEventArgs.cs
- Panel.cs
- __Error.cs
- PolyBezierSegment.cs
- Msec.cs
- UIAgentMonitorHandle.cs
- SqlRowUpdatingEvent.cs
- CombinedTcpChannel.cs
- DataGridViewCellStateChangedEventArgs.cs
- GeneralTransformGroup.cs
- RoutingExtensionElement.cs
- TreeViewEvent.cs
- DesignUtil.cs
- XmlQueryStaticData.cs
- Helper.cs
- RepeaterItemEventArgs.cs
- LicenseProviderAttribute.cs
- CopyEncoder.cs
- UnsafeNativeMethods.cs
- DataGridTableCollection.cs
- BevelBitmapEffect.cs
- DbRetry.cs