Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- StylusEditingBehavior.cs
- BuildResultCache.cs
- QueryCacheKey.cs
- PathTooLongException.cs
- DataRowView.cs
- PathNode.cs
- IdentityReference.cs
- XmlSchemaImport.cs
- XPathNode.cs
- XhtmlConformanceSection.cs
- XmlCharacterData.cs
- Rijndael.cs
- RouteValueExpressionBuilder.cs
- UIElement3DAutomationPeer.cs
- RootBuilder.cs
- BitmapEffectCollection.cs
- Hyperlink.cs
- ClientFormsAuthenticationCredentials.cs
- StringArrayConverter.cs
- PersistChildrenAttribute.cs
- MyContact.cs
- Latin1Encoding.cs
- DataReceivedEventArgs.cs
- FSWPathEditor.cs
- QuerySettings.cs
- PenThreadPool.cs
- KeySpline.cs
- LiteralSubsegment.cs
- EntityModelSchemaGenerator.cs
- ConfigXmlComment.cs
- DetailsViewRow.cs
- DataSetMappper.cs
- ElementMarkupObject.cs
- GenericEnumerator.cs
- _CommandStream.cs
- SqlConnectionManager.cs
- TailPinnedEventArgs.cs
- ShutDownListener.cs
- ACE.cs
- RemotingServices.cs
- AvTraceFormat.cs
- BindingManagerDataErrorEventArgs.cs
- KeyMatchBuilder.cs
- MLangCodePageEncoding.cs
- FormClosedEvent.cs
- NavigationCommands.cs
- UshortList2.cs
- ListView.cs
- DrawingAttributesDefaultValueFactory.cs
- DockPattern.cs
- XmlIterators.cs
- TextTabProperties.cs
- EntitySqlQueryState.cs
- ProxyManager.cs
- FlowDocumentView.cs
- DispatcherHooks.cs
- VariableDesigner.xaml.cs
- SizeConverter.cs
- _Win32.cs
- GeneralTransform3DGroup.cs
- ThemeDirectoryCompiler.cs
- NonBatchDirectoryCompiler.cs
- ProgressBar.cs
- IInstanceContextProvider.cs
- MessageQueuePermissionEntry.cs
- DataContractAttribute.cs
- ZoneIdentityPermission.cs
- BookmarkUndoUnit.cs
- EventHandlersDesigner.cs
- Attributes.cs
- ConstraintStruct.cs
- ByteAnimationUsingKeyFrames.cs
- SamlAdvice.cs
- WindowsTreeView.cs
- SecurityContext.cs
- ProcessThreadCollection.cs
- TemplateParser.cs
- DispatchRuntime.cs
- ClonableStack.cs
- SpecularMaterial.cs
- EntityContainer.cs
- WorkflowWebService.cs
- StreamGeometry.cs
- TextParagraphCache.cs
- XsltArgumentList.cs
- IsolatedStorageFilePermission.cs
- ConfigurationSectionCollection.cs
- MiniMapControl.xaml.cs
- MethodBody.cs
- EventLogStatus.cs
- TraceHwndHost.cs
- ConfigurationLockCollection.cs
- DataFormats.cs
- RunClient.cs
- SmtpAuthenticationManager.cs
- SkipQueryOptionExpression.cs
- ThumbAutomationPeer.cs
- XMLDiffLoader.cs
- ServerValidateEventArgs.cs
- ExecutionPropertyManager.cs