2009-06-09 33 views
5

Việc sử dụng tính năng chèn hàng loạt của .NET DataAdapter có hiệu quả hơn không, so với các chuyến đi vòng DB, so với sử dụng DbCommand.ExecuteNonQuery() trong một vòng lặp?Chèn hàng loạt SQL trong .NET

Đến từ thế giới Java, tôi đã hy vọng tìm được thứ gì đó tương tự như khả năng của hàng loạt nơi nhiều lệnh SQL được gửi đến cơ sở dữ liệu và được thực hiện trong một thao tác. Khi giám sát máy chủ cơ sở dữ liệu, tôi thấy DataAdapter thực hiện một thao tác trên mỗi lần chèn.

Tôi đã đọc một vài chủ đề sử dụng SqlBulkCopy nhưng điều đó sẽ chỉ hoạt động đối với MS Sql Server.

Cảm ơn!

Trả lời

5

Các DataAdapter có một tài sản UpdateBatchSize. Đặt UpdateBatchSize thành một giá trị nguyên dương làm cho các bản cập nhật cho cơ sở dữ liệu được gửi thành các lô có kích thước được chỉ định.

Hope this helps ...

+0

Đây là cấp duy nhất hỗ trợ ghép nối lệnh. Bạn có thể không bó DbCommands của riêng bạn (không hiển thị một số lớp bên trong với Reflection). –

+0

Tôi đã thử điều này. Trên MS SQL Server, SQL Profiler cho thấy mỗi câu lệnh chèn có vẻ là của nó. Sau khi xem xét bình luận của bạn, tôi đã xem một Dump TCP của cuộc hội thoại và thấy rằng nó đang trộn nhiều lệnh với nhau. SQL Profiler hiển thị từng phần chèn dưới dạng sự kiện "RPC đã hoàn thành" gây nhầm lẫn cho tôi. Cảm ơn bạn đã giúp đỡ. –

0

gì về: Một tuyên bố nhiều hàng

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

Tôi đã lo lắng rằng đây (string concatting để tạo nên những điều khoản chèn) sẽ mở ra cho tôi lên đến sql injection, vì vậy tôi đã sử dụng các đối tượng lệnh và các thông số đầu vào để làm sạch. Nếu không, tôi có thể làm một số bảng giá trị INSERT() chấm dứt bởi một ';' hoặc như bạn đã gợi ý. Cảm ơn bạn đã đề xuất! –

+0

Nếu bạn sử dụng nó như một phần của một ứng dụng web thì bạn không nên sử dụng nó. Hầu hết thời gian các lô hàng này đều được sử dụng. được sử dụng trong các bản cập nhật db và các công cụ tương tự. – albertjan

Các vấn đề liên quan