如何从SQL Server中插入和检索图像

本文关键字:插入 检索 图像 Server SQL | 更新日期: 2023-09-27 18:10:22

我已经写了代码插入一个图像在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

如何从SQL Server中插入和检索图像

这个错误意味着其中一个字段的数据(字符串或二进制)比存储它的列的数据库定义长。

这可以是您的用户名。如果数据库是varchar(8),并且您尝试分配一个包含10个字符的名称,您将得到这个错误。

不能从errormessage中推断出是哪个字段导致了错误。它可以是任何字符串或二进制数据。将输入与数据库定义交叉比对,找出导致错误的字段/列。

解决方案:提供更小的数据或增加数据库的长度

这里的问题是,保存图像的列不够大,无法容纳您要插入的图像。这意味着你必须增加它的长度,以便能够插入你想要的对象。

我没有检查代码,但我记得我用过类似的东西。

Image image;
using (MemoryStream stream = new MemoryStream(imageByteArray,0,imageByteArray.Length)) 
{ 
    stream.Write(imageByteArray,0,imageByteArray.Length); 
    image = Image.FromStream(stream,true); 
}