Tôi cần gửi danh sách các lệnh đến SQL 2008 bằng ADO.NET, để thực thi cái này sau cái kia. Tôi có nên tạo một SQLCommand mới cho mỗi SQL mà tôi đang gửi không? Hoặc tái sử dụng cùng một SQLCommand và chỉ thay đổi thuộc tính CommandText? Cảm ơn, NestorTạo mới SQLCommand hoặc tái sử dụng cùng một số
11
A
Trả lời
16
SqlCommands khá nhẹ. Bạn luôn an toàn để tạo một cái mới mỗi lần.
Có các biến chứng với các lệnh được parametrized nơi bạn cần xóa và đặt lại tất cả các tham số và tại thời điểm đó, việc tạo lệnh mới là rõ ràng, dễ hiểu và hiệu quả.
Ngoài ra, thường là OK để sử dụng SqlConnection mới mỗi lần. Kết nối tự động, tích hợp trong kết nối là "ma thuật" làm cho hiệu quả này.
tôi sử dụng này:
public void ExecuteQuery(string query)
{
this.ExecuteQuery(query, null);
}
public void ExecuteQuery(string query, Dictionary<string, object> parameters)
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
if (parameters != null)
{
foreach (string parameter in parameters.Keys)
{
cmd.Parameters.AddWithValue(parameter, parameters[parameter]);
}
}
cmd.ExecuteNonQuery();
}
}
}
Các vấn đề liên quan
- 1. Có tốt hơn khi tái sử dụng SqlCommand khi thực thi cùng một truy vấn SQL nhiều lần không?
- 2. Làm thế nào để tái sử dụng tham số SqlCommand thông qua mỗi lần lặp?
- 3. Sử dụng lại SqlCommand?
- 4. SqlCommand hoặc SqlDataAdapter?
- 5. Tái sử dụng một khách hàng dịch vụ WCF hoặc tạo một ứng dụng mỗi lần?
- 6. Sử dụng "..." và 'tái tạo'
- 7. Trang chuyên sâu Ajax: sử dụng lại cùng một đối tượng XMLHttpRequest hoặc tạo một đối tượng mới mỗi lần?
- 8. Lặp đi lặp lại một hàm người dùng định nghĩa sử dụng tái tạo() hoặc sapply()
- 9. Tái sử dụng macro C trong một số tệp
- 10. Làm thế nào để tái sử dụng một ứng dụng tái sử dụng trong Django
- 11. Backbone.js: tái tạo lại hoặc tạo lại chế độ xem?
- 12. Thực hành tốt nhất với chế độ xem Xương sống: Tái sử dụng hoặc tạo?
- 13. android - cách tạo chức năng có thể tái sử dụng?
- 14. Cách tạo ListBox.ItemTemplate có thể tái sử dụng/generic
- 15. SqlCommand khử trùng các thông số như thế nào?
- 16. Tạo mới hoặc cập nhật thực thể hiện tại cùng một lúc với JPA
- 17. url mở trong tab mới hoặc tái sử dụng hiện có bất cứ khi nào có thể
- 18. tái sử dụng BackgroundWorker nhiều hơn một lần
- 19. Sử dụng diễn viên là hai lần hoặc sử dụng như một lần và tạo một biến mới
- 20. tái sử dụng số ngẫu nhiên trong hồ chứa mẫu
- 21. Tạo cùng một chuỗi số ngẫu nhiên
- 22. Tái sử dụng một phần của một Repository git
- 23. Làm thế nào để tái sử dụng cùng một kết nối với JdbcTemplate của Spring?
- 24. strtol tái sử dụng param
- 25. HttpContext.Current.Items được tái sử dụng?
- 26. tạo ra một DSN sử dụng ODBC mới với Delphi
- 27. Entity Framework - Tái sử dụng Complex Loại
- 28. serializing một datatable để tái sử dụng sau này
- 29. Làm thế nào để tái sử dụng Kiểu giá trị trả về để tạo ra mã nguồn mới
- 30. t-SQL Sử dụng số hàng, nhưng trên hàng trùng lặp, sử dụng cùng một số
downvoting cho những lời khuyên để đóng và mở lại các kết nối. Làm điều này trong một TransactionScope sẽ ngay lập tức thúc đẩy nó vào một giao dịch DTC, mà nếu không cần thiết làm tổn thương hiệu suất và có thể giới thiệu lỗi nếu DTC không được cấu hình đúng. – Andy
@Andy: Tại sao lại bỏ phiếu khi tôi nói "thường OK"? Hầu hết mọi người sẽ không có vấn đề bạn đang mô tả. –
Nó không phải là "thường OK". Chỉ cần tìm kiếm trên internet cho bao nhiêu lần người đã bất ngờ bị cắn bởi xúc tiến DTC kể từ khi TransactionScope được giới thiệu. Lời khuyên thông thường là sử dụng lại một kết nối duy nhất cho mỗi giao dịch/đơn vị công việc. – Andy