IviKAZAZI Ответов: 2

Sql-запрос возвращает строки,но SqlDataReader возвращает null


Всем привет,

Я выполняю запрос Sql Server 2008, который возвращает набор строк. Когда я выполняю тот же запрос из кода, используя SqlDataReader ,reader.Read() возвращает null. Есть идеи??

Запрос представляет собой простой оператор Select с двумя объявленными переменными,которые используются в предложении Where.

Спасибо заранее

Richard C Bishop

Вам нужно показать свой код, мы не можем читать мысли или получить доступ к вашему жесткому диску.

[no name]

Есть идеи? Конечно, поскольку запрос возвращает данные в SSMS и ничего не возвращает в вашем коде, значит, вы сделали что-то не так. Больше мы ничего не можем сказать, так как не можем удаленно просматривать ваш код или читать ваши мысли.

IviKAZAZI

Я решил его,код был в порядке,я просто добавил строку кода cmd.ExecuteNonQuery(); перед этой строкой rdr = cmd.ExecuteReader(); и это сработало. Я не знаю, почему это произошло, но теперь все в порядке. Надеюсь, это поможет кому-нибудь еще...

2 Ответов

Рейтинг:
4

IviKAZAZI

Я решил ее,код был в порядке,я просто добавил строку кода

cmd.ExecuteNonQuery(); 


перед этой строкой

rdr = cmd.ExecuteReader(); 


и это сработало. Я не знаю, почему это произошло, но теперь все в порядке. Надеюсь, это поможет кому-нибудь еще...


Рейтинг:
0

OriginalGriff

Reader.Read не возвращается null - он не может, возвращаемый тип есть bool который является value type, и в результате не обнуляется.

Вероятно, вы имеете в виду, что он не возвращает никаких строк или reader является нулевым, и попытка использовать его вызывает исключение "нулевая ссылка".

Итак, поместите точку останова в первую строку метода и сделайте один шаг через свой код, глядя на переменные и на то, что происходит. Если вы не можете решить это самостоятельно, нам нужно будет увидеть код, который породил проблему, и лучшее описание того, в чем именно заключается проблема.


IviKAZAZI

Вы правы насчет NULL, он не вернул никаких строк. Но я решил эту проблему, просто выполнив команду с помощью ExecuteNonQuery перед тем, как выполнить executeReader, и она сработала. Мне проблема с некоторыми переменными decalred SQL на верхней части запроса.