Что означает предупреждение?
это когда ты вставляешь длииинную строку в короткое поле, и она обрезается.
Но где это может быть? При передаче параметра в C# или уже при вставке значения в таблицу?
Уже при вставке. Это из sql'я ошибка.
А как она могла появиться, когда работала раньше без проблем? Как узнать, где возникает? У меня все столбики в таблице только Int, DateTime, Float и VarChar...
VarChar
А достаточно будет все созданные таблицы подкорректировать так:
Parameter VarChar(50) -> Parameter VarChar(100)?

Parameter VarChar(50) -> Parameter VarChar(100)?

Это зависит от твоего контента. Можешь попробовать сделать Varchar(max если по этому полю нет и не будет индекса.
Спасибо огромное! Ты всегда очень быстро и доступно отвечаешь!
Потом всё так просто кажется... 
Потом всё так просто кажется... 
А еще лучше подкорректировать клиента, чтобы он серверу отдавал уже правильные данные, чтобы не случилось: "ой а куда делись данные?"
Проверить длину или принудительно ограничить поле и проинформировать пользователя ДО записи и предоставить ему возможность отредактировать данные снова, а не писать их базу.
Проверить длину или принудительно ограничить поле и проинформировать пользователя ДО записи и предоставить ему возможность отредактировать данные снова, а не писать их базу.
Разрешите, "апну" тему.
Ошибка "Object cannot be cast from DBNull to other types" появляется уже в C# или в SQL? Как от нее избавиться? Где и какие ограничения можно наложить на исходные данные или на те, которые выводятся уже в результат?
Ошибка "Object cannot be cast from DBNull to other types" появляется уже в C# или в SQL? Как от нее избавиться? Где и какие ограничения можно наложить на исходные данные или на те, которые выводятся уже в результат?Object cannot be cast from DBNullзначит из базы возвращается null, а ты пытаешься конвертировать его в значение (в число или строку, например)
А как можно избежать этого?
Можно ли в код добавить некоторый условный оператор: если NULL, то просто не беру из базы данные, если не NULL, то конвертировать? Возможно ли? Есть другие методы, более лёгкие или более оптимальные?
Можно ли в код добавить некоторый условный оператор: если NULL, то просто не беру из базы данные, если не NULL, то конвертировать? Возможно ли? Есть другие методы, более лёгкие или более оптимальные?
Поправь запрос в базе и не выбирай из нее null'ы
написать в запросе что-нить типа
isnull(PossibleNullField, '')
isnull(PossibleNullField, 0) - какой там тип требуется
ну или добавить на выборку в where clause
where PossibleNullField is not null
isnull(PossibleNullField, '')
isnull(PossibleNullField, 0) - какой там тип требуется
ну или добавить на выборку в where clause
where PossibleNullField is not null
Всем большое спасибо! 

Оставить комментарий
maximovega
Вызываю в C# процедуру на SQL-сервере и сталкиваюсь с проблемой.Что означает предупреждение String or binary data would be truncated?