Почему я получаю сообщение «Строковые или двоичные данные будут обрезаны» как ошибка? - PullRequest
2 голосов
/ 09 апреля 2011

У меня проблема с этим:

Строка или двоичные данные будут усечены

И это моя кодировка:

String savePath = @"C:\Users\Shen\Desktop\LenzOCR\LenzOCR\WindowsFormsApplication1\ImageFile\" + fileName;

inputImageBox.Image = Image.FromFile(ImageLocation);
inputImageBox.Image.Save(savePath);

String sqlData = "INSERT INTO CharacterOCR(ImageName, ImagePath, Character, CharacterDescription)    
            VALUES('"+fileName+"', '"+savePath+"', '"+typeName+"', '"+CharDesc+"')";
SqlCommand cmd = new SqlCommand(sqlData, con);
cmd.ExecuteNonQuery(); // <<<<<error indicates here

В чем проблема?

Ответы [ 4 ]

8 голосов
/ 09 апреля 2011

Посмотрите на схему вашей таблицы и посмотрите на максимальную длину. Вы, вероятно, пытаетесь вставить что-то большее, чем максимальная длина.

2 голосов
/ 09 апреля 2011

Это просто означает, что одно из значений, которое вы пытаетесь втиснуть в столбец, слишком длинное для типа данных, который вы определили для этого столбца.

Например, попытка INSERT «Привет» к столбцу, который является VARCHAR(4).

2 голосов
/ 09 апреля 2011

Обычно считается лучшей практикой кодирования сохранять пути к вашим изображениям в вашей базе данных, сохраняя ваши изображения в соответствующей структуре каталогов.

Если вы настроены на вставку данных изображений вбаза данных, пожалуйста, сообщите всем, какая версия вашей базы данных.

РЕДАКТИРОВАТЬ:

Поднимите схему SQL для столбца ImagePath и скажите, сколько символовон определен для принятия.

Далее, перед тем как выполнить SQL, вызовите Console.WriteLine(savePath.Length).

* * * * На 1015 * больше, чем определение ImagePath для столбца?

0 голосов
/ 10 января 2017

Вы получите эту ошибку, когда длина столбца отличается по сравнению с определением таблицы и параметром сохраненной процедуры. Пример:

У меня есть стол с именем Employee с колонной Reason и при объявлении таблицы длина столбца для Reason равна varchar(100)

и при написании хранимой процедуры для таблицы Employee я объявляю параметр Reason как @Reason varchar(250).

В этой ситуации вы получите эту ошибку. Поэтому убедитесь, что длина столбца уникальна.

...