2017-01-23 79 views
-1

Все связанные темы, которые я видел на этом сайте, обсуждают хранимые процедуры и аналогичные. У меня есть программа на C#, которая получает строку (неважно, откуда, может быть, файл или загружена), и пытается вставить ее в столбец varchar(MAX). Мой код выглядит так:Как сохранить длинную строку в столбце varchar (MAX) кодом C#?

command.Parameters.AddWithValue("@pxslt", mer.XsltTemplate); 

Он поднял ошибку:

String or binary data would be truncated.

Я изменил его:

command.Parameters.Add("@pxslt", SqlDbType.).Value = mer.XsltTemplate; 

, но все же это вызывает ту же ошибку.

Какое решение? Размер моей строки составляет около 8100 символов.

+1

Проверьте размер столбца в БД, вероятно, этот вопрос является дубликатом http://stackoverflow.com/questions/5591473/error-string-or-binary-data-would-be-truncated-when- попытка вставить – RamblinRose

+0

Ваш код неправильный ... 'SqlDbType.VarChar' и назначить параметр максимального значения? –

+0

http://stackoverflow.com/questions/973260/what-size-do-you-use-for-varcharmax-in-your-parameter-declaration – TyCobb

ответ

3

Вы можете использовать этот синтаксис:

command.Parameters.Add("@pxslt", SqlDbType.VarChar, -1).Value = mer.XsltTemplate; 

NB: -1 приравнивает (MAX).

+0

Я тестировал это, но все тот же вопрос. Я также тестировал это: command.Parameters.Add ("@ pxslt", SqlDbType.VarChar, mer.XsltTemplate.Length) .Value = mer.XsltTemplate; – Pat928

+0

Какой тип данных является .XsltTemplate? Строка, которую я предполагаю? Можете ли вы также дать нам определение хранимой процедуры? По крайней мере, из ПРОГРАММЫ CREATE до раздела AS, пожалуйста? –

+0

Я не использую хранимую процедуру. В качестве подсказки я использую mdf-файл в качестве базы данных. Возможно ли, что это вызывает проблему? – Pat928

0

Я понял. Ошибка возникает из-за другого поля. Это поле varchar (15), и программа пытается вставить строку из 20 символов. Я также заметил, что varchar (max) работает даже без нажатия на DbType.

+0

Рад, что вы нашли решение :-) –