Sdílet prostřednictvím


SqlBulkCopyColumnMappingCollection Třída

Definice

SqlBulkCopyColumnMapping Kolekce objektů, které dědí z CollectionBase.

public ref class SqlBulkCopyColumnMappingCollection sealed : System::Collections::IList
public ref class SqlBulkCopyColumnMappingCollection sealed : System::Collections::CollectionBase
public sealed class SqlBulkCopyColumnMappingCollection : System.Collections.IList
public sealed class SqlBulkCopyColumnMappingCollection : System.Collections.CollectionBase
type SqlBulkCopyColumnMappingCollection = class
    interface ICollection
    interface IEnumerable
    interface IList
type SqlBulkCopyColumnMappingCollection = class
    inherit CollectionBase
Public NotInheritable Class SqlBulkCopyColumnMappingCollection
Implements IList
Public NotInheritable Class SqlBulkCopyColumnMappingCollection
Inherits CollectionBase
Dědičnost
SqlBulkCopyColumnMappingCollection
Dědičnost
SqlBulkCopyColumnMappingCollection
Implementuje

Příklady

Následující příklad hromadně zkopíruje data ze zdrojové tabulky v ukázkové databázi AdventureWorks do cílové tabulky ve stejné databázi. I když počet sloupců v cíli odpovídá počtu sloupců ve zdroji, názvy sloupců a pořadí řad se neshodují. SqlBulkCopyColumnMapping jsou přidány SqlBulkCopyColumnMappingCollection do objektu SqlBulkCopy pro vytvoření mapování sloupců pro hromadnou kopii.

Důležité

Tato ukázka se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v příkladu hromadného kopírování. Tento kód je k dispozici k předvedení syntaxe pouze pro použití SqlBulkCopy . Pokud jsou zdrojová a cílová tabulka ve stejné SQL Server instanci, je jednodušší a rychlejší zkopírovat data pomocí příkazu Jazyka Transact-SQLINSERT ... SELECT.

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add("Name", "ProdName");
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order 
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add("Name", "ProdName")
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum")

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code, 
        ' you can retrieve it from a configuration file. 
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

Poznámky

Mapování sloupců definují mapování mezi zdrojem dat a cílovou tabulkou.

Pokud mapování nejsou definovaná – to znamená, ColumnMappings že kolekce je prázdná – sloupce se mapují implicitně na základě řadové pozice. Aby to fungovalo, musí se zdrojová a cílová schémata shodovat. Pokud ne, InvalidOperationException je vyhozen.

ColumnMappings Pokud kolekce není prázdná, není nutné zadat každý sloupec, který je ve zdroji dat. Ty, které kolekce nemapuje, se ignorují.

Na zdrojový a cílový sloupec můžete odkazovat podle názvu nebo pořadové řady. Ve stejné kolekci mapování můžete kombinovat odkazy na sloupce podle názvu a podle řad.

Vlastnosti

Capacity

Získá nebo nastaví počet prvků, které CollectionBase mohou obsahovat.

(Zděděno od CollectionBase)
Count

Získá počet elementů obsažených v objektu SqlBulkCopyColumnMappingCollection.

Count

Získá počet prvků obsažených CollectionBase v instanci. Tuto vlastnost nelze přepsat.

(Zděděno od CollectionBase)
InnerList

Získá obsahující ArrayList seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)
Item[Int32]

SqlBulkCopyColumnMapping Získá objekt v zadaném indexu.

List

Získá obsahující IList seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)

Metody

Add(Int32, Int32)

Vytvoří nový SqlBulkCopyColumnMapping objekt a přidá ho do kolekce pomocí ordinálů k určení zdrojového i cílového sloupce.

Add(Int32, String)

Vytvoří nový SqlBulkCopyColumnMapping objekt a přidá ho do kolekce pomocí ordinálu pro zdrojový sloupec a řetězce pro cílový sloupec.

Add(SqlBulkCopyColumnMapping)

Přidá zadané mapování do .SqlBulkCopyColumnMappingCollection

Add(String, Int32)

Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce s použitím názvu sloupce k popisu zdrojového sloupce a ordinálu pro určení cílového sloupce.

Add(String, String)

Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce pomocí názvů sloupců k určení zdrojového i cílového sloupce.

Clear()

Vymaže obsah kolekce.

Contains(SqlBulkCopyColumnMapping)

Získá hodnotu označující, zda zadaný SqlBulkCopyColumnMapping objekt existuje v kolekci.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Zkopíruje prvky objektu SqlBulkCopyColumnMappingCollection do pole SqlBulkCopyColumnMapping položek počínaje konkrétním indexem.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrací enumerátor procházející kolekci.

GetEnumerator()

Vrátí enumerátor, který iteruje instanci CollectionBase .

(Zděděno od CollectionBase)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IndexOf(SqlBulkCopyColumnMapping)

Získá index zadaného SqlBulkCopyColumnMapping objektu.

Insert(Int32, SqlBulkCopyColumnMapping)

Do zadaného indexu vložte nový SqlBulkCopyColumnMapping .

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnClear()

Provádí další vlastní procesy při vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnClearComplete()

Provádí další vlastní procesy po vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnInsert(Int32, Object)

Před vložením nového prvku do CollectionBase instance provede další vlastní procesy.

(Zděděno od CollectionBase)
OnInsertComplete(Int32, Object)

Provádí další vlastní procesy po vložení nového prvku do CollectionBase instance.

(Zděděno od CollectionBase)
OnRemove(Int32, Object)

Provádí další vlastní procesy při odebírání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnRemoveComplete(Int32, Object)

Provádí další vlastní procesy po odebrání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnSet(Int32, Object, Object)

Před nastavením hodnoty v CollectionBase instanci provede další vlastní procesy.

(Zděděno od CollectionBase)
OnSetComplete(Int32, Object, Object)

Po nastavení hodnoty v CollectionBase instanci provede další vlastní procesy.

(Zděděno od CollectionBase)
OnValidate(Object)

Provádí další vlastní procesy při ověřování hodnoty.

(Zděděno od CollectionBase)
Remove(SqlBulkCopyColumnMapping)

Odebere zadaný SqlBulkCopyColumnMapping prvek z objektu SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Odebere mapování v zadaném indexu z kolekce.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ICollection.CopyTo(Array, Int32)

Zkopíruje elementy do objektu ICollectionArray, počínaje konkrétním Array indexem.

ICollection.CopyTo(Array, Int32)

Zkopíruje celý CollectionBase objekt do kompatibilního jednorozměrného Arrayobjektu , počínaje zadaným indexem cílového pole.

(Zděděno od CollectionBase)
ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k ICollection je synchronizován (bez vláken).

ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k CollectionBase je synchronizován (bez vláken).

(Zděděno od CollectionBase)
ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k ICollection.

ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k CollectionBase.

(Zděděno od CollectionBase)
IList.Add(Object)

Přidá položku do objektu IList.

IList.Add(Object)

Přidá objekt na konec objektu CollectionBase.

(Zděděno od CollectionBase)
IList.Contains(Object)

Určuje, zda obsahuje IList konkrétní hodnotu.

IList.Contains(Object)

Určuje, zda obsahuje CollectionBase určitý prvek.

(Zděděno od CollectionBase)
IList.IndexOf(Object)

Určuje index konkrétní položky v objektu IList.

IList.IndexOf(Object)

Vyhledá zadaný Object a vrátí nulový index prvního výskytu v rámci celého CollectionBaseobjektu .

(Zděděno od CollectionBase)
IList.Insert(Int32, Object)

Vloží položku do zadaného indexu IList .

IList.Insert(Int32, Object)

Vloží prvek do zadaného indexu CollectionBase .

(Zděděno od CollectionBase)
IList.IsFixedSize

Získá hodnotu označující, zda IList má pevnou velikost.

IList.IsFixedSize

Získá hodnotu označující, zda CollectionBase má pevnou velikost.

(Zděděno od CollectionBase)
IList.IsReadOnly

Získá hodnotu, která určuje, zda je IList určena jen pro čtení.

IList.IsReadOnly

Získá hodnotu, která určuje, zda je CollectionBase určena jen pro čtení.

(Zděděno od CollectionBase)
IList.Item[Int32]

Získá nebo nastaví prvek u zadaného indexu.

IList.Item[Int32]

Získá nebo nastaví prvek u zadaného indexu.

(Zděděno od CollectionBase)
IList.Remove(Object)

Odebere první výskyt konkrétního objektu z objektu IList.

IList.Remove(Object)

Odebere první výskyt konkrétního objektu z objektu CollectionBase.

(Zděděno od CollectionBase)

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky objektu IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro

Viz také