SMOEnumerator.MoveNext Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Setzt den Enumerator auf das nächste Element der Auflistung.
public:
virtual bool MoveNext();
public bool MoveNext ();
abstract member MoveNext : unit -> bool
override this.MoveNext : unit -> bool
Public Function MoveNext () As Boolean
Gibt zurück
true, wenn der Aufzählungsator erfolgreich zum nächsten Element erweitert wurde; false, wenn der Aufzählungsator das Ende der Auflistung übergeben hat.
Implementiert
Beispiele
Im folgenden Codebeispiel wird ein ForEachLoopSMO-Aufzählungsator erstellt und in einem ForEachEnumeratorHostHosten gehostet, in dem er dann als " ForEachEnumerator in" ForEachLoophinzugefügt wird. Gibt eine zurück, SMOEnumerator eine ForEachSMOEnumeratorwird als System.Collections.IEnumerator
eine und über die Verwendung MoveNext und die CurrentIterierung erstellt. Nachdem die Auflistung das Ende übergeben hat, wird dies Reset verwendet, um den Iterator zurückzusetzen.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Enumerators.SMO;
namespace SMOEnumerator
{
class Program
{
const string PACKAGEFILENAME = @"\SamplePackage.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.DTSDesigner100;
package.Name = "SMOEnumerator Sample";
package.Description = "This is a sample for SMOEnumerator";
package.CreatorComputerName = @"MACHINENAME"; // System.Environment.MachineName;
package.CreatorName = @"USERNAME"; //System.Environment.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";
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='Tables']"
+ @"/SMOEnumType[@Name='ObjectsPP']";
System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(
connections, null, null, null);
Console.WriteLine("The collection contains the following values:");
int i = 0;
while ((smoEnumerator.MoveNext()) && (smoEnumerator.Current != null))
Console.WriteLine("[{0}] {1}", i++, smoEnumerator.Current);
smoEnumerator.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 SMOEnumerator
Class Program
const String PACKAGEFILENAME = "\SamplePackage.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.DTSDesigner100
package.Name = "SMOEnumerator Sample"
package.Description = "This is a sample for SMOEnumerator"
package.CreatorComputerName = "MACHINENAME" ' System.Environment.MachineName;
package.CreatorName = "USERNAME" 'System.Environment.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"
Dim forEachEnumeratorInfo As ForEachEnumeratorInfo = application.ForEachEnumeratorInfos("Foreach SMO Enumerator")
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='Tables']"
Dim "/SMOEnumType[@Name='ObjectsPP']" As +
System.Collections.IEnumerator smoEnumerator = (System.Collections.IEnumerator)forEachSMOEnumerator.GetEnumerator(
connections, Nothing, Nothing, Nothing)
Console.WriteLine("The collection contains the following values:")
Dim i As Integer = 0
While (smoEnumerator.MoveNext()) &&(smoEnumerator.Current <> Nothing)
Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
End While
smoEnumerator.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