Почему DataReader выдает «Перечисление не дало результатов»?C#

Место общения программистов C#
Ответить
Anonymous
 Почему DataReader выдает «Перечисление не дало результатов»?

Сообщение Anonymous »

Я использую очень простую хранимую процедуру с двумя параметрами. Затем он заполняет DataReader, но когда я запускаю код, DataReader выдает ошибку «Перечисление не дало результатов», несмотря на то, что оно прошло строку read.Read().

Моей функции передается адрес электронной почты в качестве параметра. Затем он устанавливает соединение:

Код: Выделить всё

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["IdesignTriviaConnection"].ConnectionString);
SqlCommand cmd = new SqlCommand("usp_GetCurrentLink", con);
SqlDataReader reader;

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@date", SqlDbType.DateTime, 100).Value = DateTime.Today;
cmd.Parameters.Add("@email", SqlDbType.VarChar, 100).Value = email;
После этого открывается соединение и устанавливается считыватель:

Код: Выделить всё

try
{
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
reader = cmd.ExecuteReader();

while (reader.Read())
{
long LinkID = reader.GetInt32(0);
String URL = reader.GetString(1);
long Completed = reader.GetInt32(2);

if (LinkID == 0)
{
link = "0";
}
else
{
if (Completed == 1)
{
link = "1";
}
else
{
link = URL;
}
}
}
Как уже говорилось, хранимая процедура отлично работает в анализаторе запросов, и я даже использовал отладчик, чтобы убедиться, что она действительно возвращает ожидаемые значения:

Так где же я ошибаюсь? Почему, если считыватель данных не может перечислить какие-либо данные, он проходит мимо строки reader.Read()? Почему я могу видеть эти данные в отладчике, если захочу?

Подробнее здесь: https://stackoverflow.com/questions/306 ... no-results
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»