OleDbEnumerator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK