Как вставить и получить изображение из SQL Server? - PullRequest
0 голосов
/ 03 октября 2011

Я написал код для вставки изображения на сервер SQL, но он выдает исключение:

Строка или двоичные данные будут обрезаны.Оператор был прерван.

Вот мой код для вставки изображения:

FileStream imageStream = new FileStream(CvVariables.IMAGE_PATH, FileMode.Open, FileAccess.Read);
int fileLangth = (int)imageStream.Length;
byte[] imageInBytes = new byte[fileLangth];
imageStream.Read(imageInBytes, 0, (int)fileLangth);
Cv_Customer_Information addNewCustomer = new Cv_Customer_Information
{
      UserID = this.NewCustomerTextUserName.Text,
      UserImage =new System.Data.Linq.Binary(imageInBytes),
      Date = this.NewCustomerDate.SelectedDate.ToString(),
      Name = this.NewCustomerTextBoxName.Text,
      Phone = this.NewCustomerTextBoxPhone.Text,
      Email = this.NewCustomerTextBoxEmail.Text,
      NationalID = this.NewCustomerTextBoxNationalID.Text,
      Address = this.NewCustomerTextBoxAddress.Text
};
singupDataContext.Cv_Customer_Informations.InsertOnSubmit(addNewCustomer);
singupDataContext.SubmitChanges();

Я также не понимаю, как извлечь изображения из SQL Server?

обновление: я использую тип данных изображения в поле UserImage и работаю с WPF

Ответы [ 3 ]

0 голосов
/ 03 октября 2011

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

0 голосов
/ 03 октября 2011

Я не проверял код, но помню, что использовал нечто подобное.

Image image;
using (MemoryStream stream = new MemoryStream(imageByteArray,0,imageByteArray.Length)) 
{ 
    stream.Write(imageByteArray,0,imageByteArray.Length); 
    image = Image.FromStream(stream,true); 
}
0 голосов
/ 03 октября 2011

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

Это может быть, например, ваше имя пользователя. Если база данных varchar (8) и вы пытаетесь присвоить имя из 10 символов, вы получите эту ошибку.

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

Решение: предоставить меньшие данные или увеличить длину в базе данных.

...