powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Исключение NullReferenceException при работе с SqlDataReader
6 сообщений из 6, страница 1 из 1
Исключение NullReferenceException при работе с SqlDataReader
    #36109173
ASD.Rapax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написана CLR-хранимка (Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Express Edition on Windows NT 5.1 (Build 2600: Service Pack 2) ), одна из подзадач которой - считать некоторые данные из БД. Вот этот фрагмент процедуры (многоточием заменена область ещё одного обращения к базе по контекстному соединению, объекты SqlComm и SqlRdr используются в указанном фрагменте повторно, ридер ):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
        try
        {
            using (SqlConnection SqlConn = new SqlConnection(@"Context Connection=true"))
            {
                SqlConn.Open();
...
                SqlRdr.Close();

                SqlComm.CommandText = "PrepareAlarmEventReport";

                SqlComm.Parameters.AddWithValue("@BeginString",		BeginString);
                SqlComm.Parameters.AddWithValue("@EndString",		EndString);
                SqlComm.Parameters.AddWithValue("@TypeOfContent",	TypeOfContent.ToString());
                SqlComm.Parameters.AddWithValue("@Area",		Area);
                SqlComm.Parameters.AddWithValue("@Description",		Description);

                SqlRdr = SqlComm.ExecuteReader();

                SqlRdr.Read();
                M = SqlRdr.FieldCount; // отсюда прилетает исключение
                if (M < 1)
                {
                    pipe.Send("Некорректные данные пришли с базы данных");
                    return;
                }			
                SqlRdr.Close();
            }
        }
        catch (Exception e)
        {
            pipe.Send(e.ToString());
            return;
        }

В указанной строке кода возникает следующее исключение:
"
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Data.SqlClient.SqlDataReaderSmi.get_FieldCount()
at StoredProcedures.CreateExternalReportCLR(String BeginString, String EndString, Int32 TypeOfContent, String Area, String Description)
"

В чем может быть дело?
...
Рейтинг: 0 / 0
Исключение NullReferenceException при работе с SqlDataReader
    #36109581
CmeTanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, как бэ нужно всегда проверять вернул нам чё-нить SqlDataReader или нет -
Код: plaintext
1.
if (SqlRdr.Read()) траля-ля

И что это за странная проверка на валидность через FieldCount?
PrepareAlarmEventReport - это вообще вьюха, я так полагаю? Как тогда она может возвращать переменный набор полей?
...
Рейтинг: 0 / 0
Исключение NullReferenceException при работе с SqlDataReader
    #36109616
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще есть SqlRdr.HasRows

Море излечило меня от Джихада...(с)
...
Рейтинг: 0 / 0
Исключение NullReferenceException при работе с SqlDataReader
    #36111435
ASD.Rapax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CmeTanka,

Спасибо, забыл, что проверять надо. Проблема в этом и была. Возвращался пустой набор.
FieldCount не может вернуть значение, причем заканчивается все исключением.
PrepareAlarmEventReport - это хранимая процедура. Там лежит динамический пивот, поэтому мне нужно знать сколько столбцов он возвращает.

D129,

Cпасибо. А что лучше использовать HasRows или SqlRdr.Read()? Или это как мне удобней?
...
Рейтинг: 0 / 0
Исключение NullReferenceException при работе с SqlDataReader
    #36111487
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASD.Rapax использовать HasRows или SqlRdr.Read()? Или это как мне удобней?

HasRows - скажет вам, без чтения (что в принципе - затратная операция) стоит ли читать вообще.
...
Рейтинг: 0 / 0
Исключение NullReferenceException при работе с SqlDataReader
    #36112410
ASD.Rapax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

Большое спасибо. Будем развиваться...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Исключение NullReferenceException при работе с SqlDataReader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]