共用方式為


SMODataFileEnumerator.MoveNext Method

Definition

Advances the enumerator to the next element of the collection.

public:
 virtual bool MoveNext();
public bool MoveNext ();
abstract member MoveNext : unit -> bool
override this.MoveNext : unit -> bool
Public Function MoveNext () As Boolean

Returns

true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.

Implements

Examples

The following code example creates a ForEachLoop, creates a SMO enumerator and hosts it in a ForEachEnumeratorHost, where it is then added as the ForEachEnumerator in the ForEachLoop. Returning a ForEachSMOEnumerator, a SMODataFileEnumerator is created as a System.Collections.IEnumerator and iterated over using MoveNext and Current. After the index has passed the end of the collection, the Reset is used to reset the iterator.

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;  
using Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO;  

namespace SmoDataFileEnumerator  
{  
    class Program  
    {  
        const string PACKAGEFILENAME = @"\SmoDataFileEnumeratorPackage.dtsx";  
        static void Main(string[] args)  
        {  
            // Create the SSIS application  
            Application application = new Application();  

            // Create the new package  
            Package package = new Package();  
            package.PackageType = DTSPackageType.DTSDesigner;  
            package.Name = "SMODataFileEnumerator Sample";  
            package.Description = "This is a sample for SMODataFileEnumerator";  
            // Use System.Environment.MachineName; in the following line of code.  
            package.CreatorComputerName = @"MACHINENAME";  
            // Use System.Environment.UserName; in the following line of code.  
            package.CreatorName = @"USERNAME";  

            // Adds the ADO.NET connection manager to the package  
            Connections connections = package.Connections;  
            ConnectionManager connectionManager = connections.Add("ADO.NET:SQL");  
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName);  
            connectionManager.Name = "localhost.AdventureWorks";  
            connectionManager.ConnectionString = "Data Source=localhost;"  
                + "Initial Catalog=AdventureWorks;"  
                + "Integrated Security=True;";  

            // Create ForEach SMO Loop task  
            Executables executables = package.Executables;  
            ForEachLoop forEachLoop = executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;  
            forEachLoop.Name = "Foreach Loop Container";  
            forEachLoop.Description = "Foreach Loop Container";  

            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName);  
            ForEachEnumeratorInfo forEachEnumeratorInfo  
                = application.ForEachEnumeratorInfos["Foreach SMO Enumerator"];  
            ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();  
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost;  

            // Setup the SMO enumerator  
            ForEachSMOEnumerator forEachSMOEnumerator = forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator;  
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"  
            + connectionManager.ID + @"']/Server[@Name='localhost']"  
                + @"/Database[@Name='AdventureWorks']"  
                + @"/SMOEnumObj[@Name='DataFiles']"  
                + @"/SMOEnumType[@Name='Locations']";  

            System.Collections.IEnumerator smoDataFileEnumerator = forEachSMOEnumerator.GetEnumerator(  
            connections, null, null, null) as System.Collections.IEnumerator;  
            Console.WriteLine("The collection contains the following values:");  
            int i = 0;  
            while ((smoDataFileEnumerator.MoveNext()) && (smoDataFileEnumerator.Current != null))  
                Console.WriteLine("[{0}] {1}", i++, smoDataFileEnumerator.Current);  

            smoDataFileEnumerator.Reset();  
            // Validate the layout of the package  
            DTSExecResult status = package.Validate(package.Connections, null, null, null);  
            Console.WriteLine("Validation result: " + status);  

            // Save the package  
            String currentDirectory = Environment.CurrentDirectory;  
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, null);  
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME);  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO  

Namespace SmoDataFileEnumerator  
    Class Program  
        const String PACKAGEFILENAME = "\SmoDataFileEnumeratorPackage.dtsx"  
        Shared  Sub Main(ByVal args() As String)  
            ' Create the SSIS application  
            Dim application As Application =  New Application()   

            ' Create the new package  
            Dim package As Package =  New Package()   
            package.PackageType = DTSPackageType.DTSDesigner  
            package.Name = "SMODataFileEnumerator Sample"  
            package.Description = "This is a sample for SMODataFileEnumerator"  
            ' Use System.Environment.MachineName; in the following line of code.  
            package.CreatorComputerName = "MACHINENAME"  
            ' Use System.Environment.UserName; in the following line of code.  
            package.CreatorName = "USERNAME"  

            ' Adds the ADO.NET connection manager to the package  
            Dim connections As Connections =  package.Connections   
            Dim connectionManager As ConnectionManager =  connections.Add("ADO.NET:SQL")   
            Console.WriteLine("ConnectionManager creation name: {0}", connectionManager.CreationName)  
            connectionManager.Name = "localhost.AdventureWorks"  
            connectionManager.ConnectionString = "Data Source=localhost;"  
                + "Initial Catalog=AdventureWorks;"  
                Dim "Integrated Security=True;" As +  

            ' Create ForEach SMO Loop task  
            Dim executables As Executables =  package.Executables   
            Dim forEachLoop As ForEachLoop =  executables.Add("STOCK:FOREACHLOOP") as ForEachLoop   
            forEachLoop.Name = "Foreach Loop Container"  
            forEachLoop.Description = "Foreach Loop Container"  

            Console.WriteLine("ForEachLoop creation name: {0}", forEachLoop.CreationName)  
            ForEachEnumeratorInfo forEachEnumeratorInfo  
                Dim  As =  
            Dim forEachEnumeratorHost As ForEachEnumeratorHost =  forEachEnumeratorInfo.CreateNew()   
            forEachLoop.ForEachEnumerator = forEachEnumeratorHost  

            ' Setup the SMO enumerator  
            Dim forEachSMOEnumerator As ForEachSMOEnumerator =  forEachEnumeratorHost.InnerObject as ForEachSMOEnumerator   
            forEachSMOEnumerator.EnumURN = "RuntimeServer[@Connection='"  
            + connectionManager.ID + "']/Server[@Name='localhost']"  
                + "/Database[@Name='AdventureWorks']"  
                + "/SMOEnumObj[@Name='DataFiles']"  
                Dim "/SMOEnumType[@Name='Locations']" As +  

            System.Collections.IEnumerator smoDataFileEnumerator = forEachSMOEnumerator.GetEnumerator(  
            connections, Nothing, Nothing, Nothing) as System.Collections.IEnumerator  
            Console.WriteLine("The collection contains the following values:")  
            Dim i As Integer =  0   
            While (smoDataFileEnumerator.MoveNext()) &&(smoDataFileEnumerator.Current <> Nothing)  
                Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1  
            End While  

            smoDataFileEnumerator.Reset()  
            ' Validate the layout of the package  
            Dim status As DTSExecResult =  package.Validate(package.Connections,Nothing,Nothing,Nothing)   
            Console.WriteLine("Validation result: " + status)  

            ' Save the package  
            Dim currentDirectory As String =  Environment.CurrentDirectory   
            application.SaveToXml(currentDirectory + PACKAGEFILENAME, package, Nothing)  
            Console.WriteLine("Package saved to " + currentDirectory + PACKAGEFILENAME)  
        End Sub  
    End Class  
End Namespace  

Applies to