SMODataFileEnumerator.MoveNext Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memajukan enumerator ke elemen koleksi berikutnya.
public:
virtual bool MoveNext();
public bool MoveNext ();
abstract member MoveNext : unit -> bool
override this.MoveNext : unit -> bool
Public Function MoveNext () As Boolean
Mengembalikan
true jika enumerator berhasil dimajukan ke elemen berikutnya; false jika enumerator telah melewati akhir koleksi.
Penerapan
Contoh
Contoh kode berikut membuat ForEachLoop, membuat enumerator SMO dan menghostingnya di ForEachEnumeratorHost, di mana kemudian ditambahkan sebagai ForEachEnumerator di ForEachLoop. Mengembalikan ForEachSMOEnumerator, dibuat SMODataFileEnumerator sebagai System.Collections.IEnumerator dan diulang melalui penggunaan MoveNext dan Current. Setelah indeks melewati akhir koleksi, Reset digunakan untuk mengatur ulang 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