Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IsDBNull / 7 сообщений из 7, страница 1 из 1
24.07.2007, 06:28
    #34678699
macros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
Извиняйте сразу если ответ опять простой
поискал по форуму но ответ так и не нашел

sql2005 - VS2005 - C#

при считывании проверяю содержимое поля на null как положено (как умею):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
con1.Open();
        SqlDataReader rdr1 = cmd1.ExecuteReader();
        rdr1.Read();

        if (rdr1.IsDBNull( 4 )) Label1.Text = "-";
        else 
        {
            a1 = a1 + Convert.ToDouble(rdr1["Pole1"]);
            Label1.Text = Convert.ToString(rdr1["Pole1"]);
        }

но вылетает ошибка:
Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.

Source Error:

Line 45: rdr1.Read();
Line 46:
Line 47: if (rdr1.IsDBNull(4)) Label1.Text = "-";
Line 48: else
Line 49: {

Я наверное что-то еще забыл?

Незнание - порождает стремление...
...
Рейтинг: 0 / 0
24.07.2007, 07:19
    #34678717
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
Вот примерчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
cmd.Connection.Open();
			OleDbDataReader reader = cmd.ExecuteReader();
            redate = DateTime.MinValue;
            while (reader.Read())
            {
				if (!reader.IsDBNull( 0 ))
				{
					redate = reader.GetDateTime( 0 );
				}
			}
			reader.Close();
			cmd.Connection.Close();
...
Рейтинг: 0 / 0
24.07.2007, 09:15
    #34678851
macros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
Спасибо!!

попробовал вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        while (rdr1.Read())
        {
            if (rdr1.IsDBNull( 4 )) Label1.Text = "-";            
            else
            {
                a1 = a1 + Convert.ToDouble(rdr1["Shihta"]);
                Label1.Text = Convert.ToString(rdr1["Shihta"]);
            }
.....................

        }

и все заработало! неужели все из-за того что while надо было поставить?
и еще один глюк - если записи все таки нет - в Label.Text остается предыдущее значение!!
почему то не происходит Label1.Text = "-";

Незнание - порождает стремление...
...
Рейтинг: 0 / 0
24.07.2007, 09:57
    #34678966
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
macros
и все заработало! неужели все из-за того что while надо было поставить?

Да странно ... rdr1.Read(); и так перемещает ридер к следующей записи. Сколько записей в ридере ?
...
Рейтинг: 0 / 0
24.07.2007, 10:05
    #34678981
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
Просто ридер может не вернуть ни одной записи и лучше проверять это либо в if, если одно считывание, либо как в примере выше
...
Рейтинг: 0 / 0
24.07.2007, 10:07
    #34678992
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
Для одного считывания достаточно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 if(rdr1.Read())
        {
            if (rdr1.IsDBNull( 4 )) Label1.Text = "-";            
            else
            {
                a1 = a1 + Convert.ToDouble(rdr1["Shihta"]);
                Label1.Text = Convert.ToString(rdr1["Shihta"]);
            }
.....................

        }
else Label1.Text = "-";
...
Рейтинг: 0 / 0
24.07.2007, 10:51
    #34679185
macros
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IsDBNull
big-duke macros
и все заработало! неужели все из-за того что while надо было поставить?

Да странно ... rdr1.Read(); и так перемещает ридер к следующей записи. Сколько записей в ридере ?

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


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