2009-06-09 18 views
5

Czy korzystanie z funkcji wsadowej wsadowej .NET DataAdapter jest bardziej wydajne, jeśli chodzi o przejazdy w obie strony, w porównaniu do używania funkcji DbCommand.ExecuteNonQuery() w pętli?Wstawianie wsadowego SQL w .NET

Pochodzę ze świata Java, miałem nadzieję znaleźć coś podobnego do jego umiejętności wsadowych, w których wiele poleceń SQL jest wysyłanych do bazy danych i wykonywane w jednej operacji. Podczas monitorowania serwera bazy danych widzę obiekt DataAdapter wykonujący jedno wykonanie dla każdego wkładu.

Przeczytałem kilka tematów, które używają SqlBulkCopy, ale to tylko będzie działać na MS Sql Server.

Dzięki!

Odpowiedz

5

DataAdapter ma właściwość UpdateBatchSize. Ustawienie wartości UpdateBatchSize na dodatnią wartość całkowitą powoduje, że aktualizacje bazy danych są wysyłane jako partie o określonym rozmiarze.

Nadzieja to pomaga ...

+0

Jest to jedyny poziom obsługujący grupowanie poleceń. Nie możesz grupować swoich własnych poleceń DbCommands (bez ujawniania niektórych klas wewnętrznych dzięki Reflection). –

+0

Próbowałem tego. Na MS SQL Server, SQL Profiler pokazuje, że każda instrukcja insert wydaje się być na swoim. Po przejrzeniu Twojego komentarza, obejrzałem zrzut TCP rozmowy i widzę, że grupuje ona wiele poleceń razem. Program SQL Profiler pokazuje każdą wstawkę jako zdarzenie "RPC Completed", co wprowadziło mnie w błąd. Dzięki za pomoc. –

0

Co o: jedna instrukcja wielu wierszy

mysql: 
INSERT INTO table (id) VALUES (1), (2), (3) 

mssql: 
INSERT INTO table (id) 
SELECT 1 
UNION ALL 
SELECT 2 
UNION ALL 
SELECT 3 
+0

Martwiłam się, że ten (string concatting nadrobić instrukcje wstawiania) otworzy mnie na SQL injection, więc używałem obiekt polecenia i parametry oczyścić wejście. W przeciwnym razie mógłbym wykonać kilka WARTOŚCI tabeli VALUES() zakończonych przez ';' lub jak sugerowałeś. Dziękujemy za sugestię! –

+0

Jeśli używasz tego jako części aplikacji webowej, nie powinieneś jej używać. W większości przypadków te operacje wsadowe. są używane w aktualizacjach db i tym podobnych. – albertjan