Sự khác biệt giữa ExecuteScalar, ExecuteReader và ExecuteNonQuery là gì?
Sự khác biệt giữa ExecuteScalar, ExecuteReader và ExecuteNonQuery là gì?
ExecuteScalar, ExecuteReader và ExecuteNonQuery là ba phương thức thực thi truy vấn trong ADO.NET, mỗi phương thức có mục đích sử dụng khác nhau:
ExecuteScalar: Phương thức này được sử dụng khi truy vấn chỉ trả về một giá trị duy nhất, thường là từ cột đầu tiên của hàng đầu tiên trong kết quả truy vấn. Ví dụ, khi bạn muốn lấy tổng số lượng, giá trị trung bình hoặc bất kỳ giá trị tổng hợp nào khác. ExecuteScalar sẽ trả về một đối tượng và bạn cần chuyển đổi đối tượng này về kiểu dữ liệu mong muốn[1][2][6][11].
ExecuteReader: Phương thức này được sử dụng để thực thi các truy vấn SELECT và trả về một đối tượng SqlDataReader, cho phép bạn đọc dữ liệu trả về từng hàng một. Đây là phương thức thích hợp khi bạn cần truy xuất nhiều hàng từ cơ sở dữ liệu vì nó không lưu trữ toàn bộ kết quả truy vấn trong bộ nhớ, giúp tiết kiệm tài nguyên hệ thống[1][2][6][9][12].
ExecuteNonQuery: Phương thức này thường được sử dụng để thực thi các câu lệnh SQL không trả về kết quả dạng bảng, như INSERT, UPDATE, DELETE, hoặc các câu lệnh DDL như CREATE TABLE, ALTER TABLE. ExecuteNonQuery trả về số lượng hàng bị ảnh hưởng bởi câu lệnh SQL, ví dụ như số hàng được thêm mới hoặc cập nhật[1][2][3][4][5][7][15][17].
Mỗi phương thức có đặc điểm và mục đích sử dụng riêng, tùy thuộc vào nhu cầu cụ thể của truy vấn bạn cần thực hiện trong ứng dụng của mình.
Citations:
[1] https://stackoverflow.com/questions/2974154/what-is-the-difference-between-executescalar-executereader-and-executenonquery
[2] https://www.c-sharpcorner.com/interview-question/what-is-difference-between-executescaler-executenonquery-and-executedatareader
[3] https://www.codingfusion.com/Post/Difference-between-ExecuteReader-ExecuteScalar-and
[4] https://www.o...
middle
Gợi ý câu hỏi phỏng vấn
Trong những tình huống nào thì việc thiết lập pooling=false trong chuỗi kết nối ADO.NET có giá trị khi kết nối đến SQL Server?
Chưa có bình luận nào