Из-за деликатного характера запроса и даже информации я не могу предоставить точный код. Поэтому я предоставлю представительный набор кода. Я могу разобраться в проблеме, если пойму, почему она работает так, как она делает. Так что я знаю, что нет ничего с SQL. Но при запуске через C # он возвращает только последний ряд. Вот что я устраняю.
Необходимость
Заказчик хочет, чтобы все результаты таблицы (с ограничениями, управляемыми в другом месте) были отправлены в файл. Я делаю это в коде, потому что он выполняется другим приложением.
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
using (writer = new StreamWriter(output))
{
// Some StringBuilder code gets info from the reader and appends to a string called line
writer.WriteLine(line)
}
}
}
Теперь я читаю этот код, чтобы сказать: «Хорошо, пока вы читаете строки, вы идетеиспользовать этот StreamWriter и записать каждую строку в файл с новой строкой ".
Часть, которая не работает - и что меня отталкивает, - это то, что она записывает только самую последнюю запись результатов SQL.
Я добавил RecordsReturned и возвращает мне -1,но когда это делается в цикле, я вижу, что он возвращает тот же результат x точное количество записей в наборе записей.
Я подозреваю, что это выполняется с помощью шага ExecuteReader (), где он уже считывает результаты. Мой вопрос: верна ли моя теория, и если да, то почему? Функция read () из SqlDataReader при запуске в цикле while должна давать мне каждую строку по порядку для каждого выполнения, и в соответствии с Intellisense это верно. Так что либо мое предположение неверно, либо я что-то упускаю.
Есть идеи?