wolałbym zdefiniowane przez użytkownika typ danych: jest super szybki.
Etap 1: własnego definiowania Tabela w SQL serwera bazy
CREATE TYPE [dbo].[udtProduct] AS TABLE(
[ProductID] [int] NULL,
[ProductName] [varchar](50) NULL,
[ProductCode] [varchar](10) NULL
)
GO
Etap 2: Tworzenie procedury przechowywanej z typ zdefiniowany przez użytkownika
CREATE PROCEDURE ProductBulkInsertion
@product udtProduct readonly
AS
BEGIN
INSERT INTO Product
(ProductID,ProductName,ProductCode)
SELECT ProductID,ProductName,ProductCode
FROM @product
END
Etapie 3: Wykonaj procedurę przechowywaną z C#
SqlCommand sqlcmd = new SqlCommand("ProductBulkInsertion", sqlcon);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.AddWithValue("@product", productTable);
sqlcmd.ExecuteNonQuery();
Możliwa Problem: Alter User Defined Tabela
Właściwie nie ma polecenia SQL Server, aby zmienić zdefiniowane przez użytkownika typ Ale w Management Studio można to osiągnąć z następujących etapów
1. wygeneruj skrypt dla danego typu. (W nowym oknie zapytania lub jako plik). 2. Usuń tabelę użytkownika z usuniętymi błędami. 3. Zmodyfikuj skrypt tworzenia, a następnie wykonaj.
SqlBulkCopy jest zdecydowanie droga –
http://www.codedigest.com/Articles/Framework/388_Doing_Bulk_UploadInsert_of_DataTable_to_a_Table_in_SQL_server_in_C_.aspx dla SqlBulkCopy przykład. – JamieSee
Czy możesz określić, która wersja SQL Server? –