Что означает предупреждение?

maximovega

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

okis

это когда ты вставляешь длииинную строку в короткое поле, и она обрезается.

maximovega

Но где это может быть? При передаче параметра в C# или уже при вставке значения в таблицу?

okis

Уже при вставке. Это из sql'я ошибка.

maximovega

   А как она могла появиться, когда работала раньше без проблем? Как узнать, где возникает? У меня все столбики в таблице только Int, DateTime, Float и VarChar...

okis

VarChar

maximovega

А достаточно будет все созданные таблицы подкорректировать так:
Parameter VarChar(50) -> Parameter VarChar(100)?
:)

okis

Это зависит от твоего контента. Можешь попробовать сделать Varchar(max если по этому полю нет и не будет индекса.

maximovega

Спасибо огромное! Ты всегда очень быстро и доступно отвечаешь! :) Потом всё так просто кажется... :o

peter1dav

А еще лучше подкорректировать клиента, чтобы он серверу отдавал уже правильные данные, чтобы не случилось: "ой а куда делись данные?"
Проверить длину или принудительно ограничить поле и проинформировать пользователя ДО записи и предоставить ему возможность отредактировать данные снова, а не писать их базу.

maximovega

Разрешите, "апну" тему. :) Ошибка "Object cannot be cast from DBNull to other types" появляется уже в C# или в SQL? Как от нее избавиться? Где и какие ограничения можно наложить на исходные данные или на те, которые выводятся уже в результат?

okis

Object cannot be cast from DBNull
значит из базы возвращается null, а ты пытаешься конвертировать его в значение (в число или строку, например)

maximovega

А как можно избежать этого?
Можно ли в код добавить некоторый условный оператор: если NULL, то просто не беру из базы данные, если не NULL, то конвертировать? Возможно ли? Есть другие методы, более лёгкие или более оптимальные?

val63

Поправь запрос в базе и не выбирай из нее null'ы

bav46

написать в запросе что-нить типа
isnull(PossibleNullField, '')
isnull(PossibleNullField, 0) - какой там тип требуется
ну или добавить на выборку в where clause
where PossibleNullField is not null

maximovega

Всем большое спасибо! :)
Оставить комментарий
Имя или ник:
Комментарий: