Я работаю над веб-приложением ASP.NET с Visual Studio 2010. Моя целевая среда - «.NET Framework 4», и я отправляю запросы к базе данных SQL Server 2008, версия которой - «Microsoft SQL Server 2008 R2».(SP2) ".
Я подключаюсь, используя следующую строку подключения "Data Source=XXXX;Initial Catalog=XXXX;Integrated Security=False;User Id=XXXX;Password= XXXX;MultipleActiveResultSets=True"
и отправляю запросы с кодом ниже:
public static List<DataTable> getData(String query)
{
var results = new List<DataTable>();
try
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
command.CommandTimeout = 0;
using (SqlDataReader reader = command.executeReader())
{
do
{
while (reader.Read()) ;
var dataTable = new DataTable();
dataTable.Load(reader);
results.Add(dataTable);
} while (reader.NextResult());
}
connection.Close();
}
}
}
}
Отправляемый запрос является хранимой процедуройкоторый возвращает две таблицы, сначала у него был цикл, который вызывает другую хранимую процедуру в зависимости от некоторого внутреннего условия, создания и вставки для tempdb..#table
и двух операторов SELECT.
Но теперь он содержит только:
SELECT 1,2,3,4,5
SELECT 6,7,8,9,0
Я не знаю почему, но reader.NextResult()
всегда ложно, поэтому я никогда не получаю второй результат таблицы.
Кто-нибудь знает, что я делаю неправильно?Что я должен сделать, чтобы получить и прочитать два результата из запроса?