Bình luận Phương thức sqlcommand executescalar là gì là chủ đề trong nội dung bây giờ của Kí tự đặc biệt Vuongquoctrenmay.vn. Theo dõi nội dung để biết đầy đủ nhé.
Các trường hợp khác nhau khi chúng ta sử dụng ba loại này là gì? Tôi nên sử dụng ở đâu và không nên dùng ở đâu?
ExecuteScalarthường được sử dụng khi truy vấn của bạn trả về một giá trị duy nhất. Nếu nó trả về nhiều hơn, thì kết quả là cột đầu tiên của hàng đầu tiên. Một ví dụ có thể là SELECT
IDENTITY AS “Identity”.ExecuteReaderđược sử dụng cho bất kỳ tập hợp kết quả nào có nhiều hàng / cột (ví dụ SELECT col1, col2 from sometable:).ExecuteNonQuery thường được sử dụng cho các câu lệnh SQL không có kết quả (ví dụ: UPDATE, INSERT, v.v.).
Tôi nghĩ ExecuteNonQuery được sử dụng khi bạn cần gọi các thủ tục được lưu trữ sẽ trả về một tập hợp các bảng.
ExecuteNonQuery cũng hoạt động nếu bạn có câu lệnh trả về trong thủ tục được lưu trữ. stackoverflow.com/questions/6210027/…
ExecuteNonQuery ():
sẽ chỉ hoạt động với Truy vấn hành động (Tạo, Thay đổi, Thả, Chèn, Cập nhật, Xóa).Trả về số hàng được thực hiện bởi Truy vấn.Loại trả về là intGiá trị trả về là tùy chọn và có thể được gán cho một biến số nguyên.
Bạn đang xem: Executescalar là gì
ExecuteReader ():
sẽ hoạt động với Truy vấn Hành động và Không phải Hành động (Chọn)Trả về tập hợp các hàng được chọn bởi Truy vấn.Loại trả về là DataReader.Giá trị trả về là bắt buộc và nên được gán cho một đối tượng DataReader khác.
ExecuteScalar ():
sẽ hoạt động với các Truy vấn Không phải Hành động có chứa các hàm tổng hợp.Trả về giá trị hàng đầu tiên và cột đầu tiên của kết quả truy vấn.Loại trả về là đối tượng.Giá trị trả về là bắt buộc và nên được gán cho một biến loại bắt buộc.
URL tham chiếu:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
Mỗi cái là một kiểu thực thi khác nhau.
ExecuteScalar sẽ là loại truy vấn sẽ trả về một giá trị duy nhất.
Một ví dụ sẽ trả về một id được tạo sau khi chèn.
INSERT INTO my_profile (Address) VALUES (“123 Fake St.”); SELECT CAST(scope_identity() AS int)
ExecuteReader cung cấp cho bạn một trình đọc dữ liệu, cho phép bạn đọc tất cả các cột của kết quả cùng một lúc.
Một ví dụ sẽ là lấy thông tin hồ sơ cho một hoặc nhiều người dùng.
SELECT * FROM my_profile WHERE id = “123456”
ExecuteNonQuery là bất kỳ SQL nào không trả về giá trị, nhưng thực sự đang thực hiện một số dạng công việc như chèn xóa hoặc sửa đổi thứ gì đó.
Một ví dụ sẽ là cập nhật hồ sơ của người dùng trong cơ sở dữ liệu.
UPDATE my_profile SET Address = “123 Fake St.” WHERE id = “123456”
Có vẻ như bạn có thể sử dụng ExecuteReader để thực hiện các công việc được thực hiện bởi cả ExecuteScalar & ExecuteNonQuery, vậy tại sao lại sử dụng hai cái kia? bất kỳ lợi ích hiệu suất?
Một lý do để tránh lạm dụng ExecuteReader là nó sẽ giữ người đọc đó ở bên cạnh cho đến khi bạn làm xong. Với tất cả những điều này, bạn muốn biết một số thông tin cụ thể về cách hoạt động của chúng để sử dụng chúng một cách hiệu quả nhất. Những gì tôi đã nêu ra ở đây là một số hướng dẫn tốt.
Từ các tài liệu (lưu ý: MSDN là một tài nguyên hữu ích khi bạn muốn biết mọi thứ hoạt động!):
ExecuteScalar
Sử dụng phương thức ExecuteScalar để truy xuất một giá trị (ví dụ: giá trị tổng hợp) từ cơ sở dữ liệu. Điều này yêu cầu ít mã hơn so với sử dụng phương thức ExecuteReader, sau đó thực hiện các thao tác mà bạn cần để tạo ra một giá trị duy nhất bằng cách sử dụng dữ liệu được trả về bởi một SqlDataReader.
Xem thêm: Cbre Là Gì – Lĩnh Vực
ExecuteReader
Gửi CommandText tới Connection và tạo một SqlDataReader.
… và từ SqlDataReader …
Cung cấp cách đọc luồng hàng chỉ chuyển tiếp từ cơ sở dữ liệu SQL Server. Lớp này không thể được thừa kế.
ExecuteNonQuery
Bạn có thể sử dụng ExecuteNonQuery để thực hiện các hoạt động danh mục (ví dụ: truy vấn cấu trúc của cơ sở dữ liệu hoặc tạo các đối tượng cơ sở dữ liệu như bảng) hoặc để thay đổi dữ liệu trong cơ sở dữ liệu mà không sử dụng DataSet bằng cách thực thi các câu lệnh UPDATE, INSERT hoặc DELETE.
Để thêm vào những gì người khác đã đăng:
ExecuteScalar trả về một cách khái niệm cột ngoài cùng bên trái từ hàng đầu tiên của tập kết quả từ truy vấn; bạn có thể ExecuteScalar một nhân viên SELECT * FROM, nhưng bạn chỉ nhận được ô đầu tiên của các hàng kết quả Thường được sử dụng cho các truy vấn trả về một giá trị duy nhất. Tôi không chắc chắn 100% về SQLServer nhưng trong Oracle, bạn wouldnt sử dụng nó để chạy một CHỨC NĂNG (mã cơ sở dữ liệu trả về một giá trị duy nhất) và hy vọng nó sẽ cung cấp cho bạn giá trị trả về của hàm mặc dù chức năng trả về giá trị duy nhất. . Tuy nhiên, nếu bạn đang chạy hàm như một phần của truy vấn, ví dụ: SELECT SUBSTR (“abc”, 1, 1) FROM DUAL thì nó sẽ cung cấp giá trị trả về do thực tế là giá trị trả về được lưu trữ ở trên cùng bên trái ô của tập hàng kết quả
ExecuteNonQuery sẽ được sử dụng để chạy các thủ tục, hàm và truy vấn được lưu trữ trong cơ sở dữ liệu để sửa đổi dữ liệu (CHÈN / CẬP NHẬT / XÓA) hoặc sửa đổi cấu trúc cơ sở dữ liệu (TẠO BẢNG …). Thông thường, giá trị trả về của lệnh gọi là dấu hiệu cho biết có bao nhiêu hàng bị ảnh hưởng bởi hoạt động nhưng hãy kiểm tra tài liệu DB để đảm bảo điều này
ExecuteReader() thực thi truy vấn SQL trả về đối tượng DBDataReader của nhà cung cấp dữ liệu cung cấp quyền truy cập chỉ chuyển tiếp và chỉ đọc cho kết quả của truy vấn.
ExecuteScalar()tương tự như ExecuteReader()phương thức được thiết kế cho truy vấn singleton chẳng hạn như thu được số lượng bản ghi.
ExecuteNonQuery() thực thi truy vấn không hoạt động với tạo, xóa, cập nhật, chèn)
ExecuteNonQuery
Phương thức ExecuteNonQuery này sẽ chỉ được sử dụng cho các câu lệnh chèn, cập nhật và xóa, Tạo và SET. Phương thức ExecuteNonQuery sẽ trả về số hàng được thực hiện bằng các thao tác INSERT, DELETE hoặc UPDATE.
ExecuteScalar
Rất nhanh để lấy các giá trị đơn lẻ từ cơ sở dữ liệu. Thực thi Scalar sẽ trả về giá trị cột đơn hàng đơn tức là giá trị đơn, khi thực hiện Truy vấn SQL hoặc thủ tục Đã lưu trữ bằng đối tượng lệnh. ExecuteReader
Execute Reader sẽ được sử dụng để trả về tập hợp các hàng khi thực hiện Truy vấn SQL hoặc thủ tục Đã lưu trữ bằng đối tượng lệnh. Cái này chỉ chuyển tiếp truy xuất các bản ghi và nó được sử dụng để đọc các giá trị bảng từ đầu tiên đến cuối cùng.
Phương thức ExecuteNonQuery sẽ trả về số hàng được thực hiện bằng các thao tác INSERT, DELETE hoặc UPDATE. Phương thức ExecuteNonQuery này sẽ chỉ được sử dụng cho các câu lệnh chèn, cập nhật và xóa, Tạo và SET. (Đọc thêm)
ExecuteScalar sẽ trả về giá trị cột đơn hàng đơn tức là giá trị đơn, khi thực hiện Truy vấn SQL hoặc thủ tục Đã lưu trữ bằng đối tượng lệnh. Rất nhanh để lấy các giá trị đơn lẻ từ cơ sở dữ liệu. (Đọc thêm)
ExecuteReader sẽ được sử dụng để trả về tập hợp các hàng khi thực hiện Truy vấn SQL hoặc thủ tục Đã lưu trữ bằng đối tượng lệnh. Cái này chỉ chuyển tiếp truy xuất các bản ghi và nó được sử dụng để đọc các giá trị bảng từ đầu tiên đến cuối cùng. (Đọc thêm)
ExecuteNonQuery: thường được sử dụng khi không có gì trả về từ các câu lệnh Sql như các thao tác chèn, cập nhật, xóa.
Xem thêm: Catena Là Gì
cmd.ExcecuteNonQuery();ExecuteScalar:
Nó sẽ được sử dụng khi truy vấn Sql trả về một giá trị duy nhất.
Int b = cmd.ExcecuteScalar();ExecuteReader
Nó sẽ được sử dụng khi truy vấn Sql hoặc Thủ tục đã lưu trữ trả về nhiều hàng / cột
SqlDataReader dr = cmd.ExecuteReader();để biết thêm thông tin, bạn có thể nhấp vào đây http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Chuyên mục: Hỏi Đáp