Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Исключение NullReferenceException при работе с SqlDataReader / 6 сообщений из 6, страница 1 из 1
25.07.2009, 16:12
    #36109173
ASD.Rapax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение NullReferenceException при работе с SqlDataReader
Написана 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
26.07.2009, 15:05
    #36109581
CmeTanka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключение NullReferenceException при работе с SqlDataReader
Дык, как бэ нужно всегда проверять вернул нам чё-нить SqlDataReader или нет -
Код: plaintext
1.
if (SqlRdr.Read()) траля-ля

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

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

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

D129,

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

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

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


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