Nếu câu lệnh/proc của bạn trả lại nhiều tập kết quả, Ví dụ, nếu bạn có hai câu lệnh select
trong đối tượng Command
, thì bạn sẽ lấy lại hai tập kết quả.
NextResult
được sử dụng để di chuyển giữa các bộ kết quả.
Read
được sử dụng để tiến lên phía trước trong hồ sơ của một tập hợp kết quả duy nhất.
Hãy xem xét ví dụ sau:
Nếu bạn có một proc mà cơ thể chính là như:
.... Proc start
SELECT Name,Address FROM Table1
SELECT ID,Department FROM Table2
-- Proc End
Thực thi các proc trên sẽ sản xuất hai bộ kết quả. Một cho Table1
hoặc câu lệnh chọn đầu tiên và câu lệnh khác cho tuyên bố select
tiếp theo.
Theo mặc định, tập hợp kết quả đầu tiên sẽ có sẵn cho Read
. Nếu bạn muốn chuyển sang tập kết quả thứ hai, bạn sẽ cần NextResult
.
Xem: Retrieving Data Using a DataReader
Ví dụ Mã so với cùng link: Lấy Nhiều Tập Hợp Kết Quả sử dụng NextResult
static void RetrieveMultipleResults(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
reader.GetName(1));
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
reader.NextResult();
}
}
}
Tôi không hiểu ý bạn với 2 câu lệnh 'select' trong một truy vấn. Nếu bạn có 2 câu lệnh 'select', điều này có nghĩa là bạn có 2 truy vấn ... EDIT: Ok, tôi nghĩ rằng bây giờ tôi đã hiểu. NextResult chuyển sang 'truy vấn' tiếp theo trong ví dụ của bạn. Điều này xảy ra chỉ khi bạn sử dụng thủ tục? – Ozkan
@Ozkan, Bạn có thể thực hiện nhiều câu lệnh chọn trong một lệnh đơn như 'SELECT * FROM Table1; SELECT * FROM TABLE2;', được phân cách bởi ';' trong trường hợp của SQL, hoặc bạn có thể lưu trữ thủ tục với nhiều câu lệnh chọn. – Habib
@Ozkan, để chỉnh sửa của bạn trong bình luận, không có bạn có thể nối hai truy vấn cũng như trong một lệnh. Tôi đã thêm một liên kết từ MSDN và ví dụ từ đó là tốt. – Habib