如何从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
这个错误意味着其中一个字段的数据(字符串或二进制)比存储它的列的数据库定义长。
这可以是您的用户名。如果数据库是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);
}