SqlCeDataReader пока (read()) выполняется на пустом наборе данных

Я использую SqlCeDataReader для чтения результатов запроса и добавления их в список объектов, которые могут возвращать 0 или много строк.

Мой код:

while (tourReader.Read())
{
    Tour newTour = TourDBA.RetrieveTour( (int)reader["Id"] );
    if (newTour != null)
        creater.Tours.Add(newTour); 
}

Я бы предположил, что, поскольку запрос Select должен возвращать 0 строк, Read() вернет false и, следовательно, цикл никогда не будет введен. (Я знаю, что находится в таблице для этого экземпляра теста, и 0 строк - это ожидаемое поведение этого теста.)

Есть идеи как обойти это? (Использование.HasRows также вызывает исключение.)

Еще одна вещь - соединение, которое я использую в этом запросе, открыто и использовалось в другом SqCeCommand, отличном от того, который выполняется здесь до того, как метод придет в цикл while. Если это имеет значение...

1 ответ

Решение

Проверь это:

while (tourReader.Read()) // tourReader here
{
    Tour newTour = TourDBA.RetrieveTour( (int)reader["Id"] ); // reader here
    if (newTour != null)
        creater.Tours.Add(newTour); 
}

Являются reader а также tourReader тот же самый?

Другие вопросы по тегам