0

나는 SQL 서버에서 이미지를 삽입하는 코드를 작성했습니다하지만 예외가 발생합니다 :SQL Server에서 이미지를 삽입하고 검색하는 방법은 무엇입니까?

문자열이나 이진 데이터는 잘립니다 것입니다. 그 진술서는 만료되었습니다. 여기

삽입 이미지 내 코드입니다 :

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 서버에서 이미지를 검색하는 방법을 이해 돈`t은?

업데이트 : 나는 UserImage 필드에 이미지 데이터 형식을 사용하고 난 WPF

+4

첫 번째 질문 - "문자열 또는 이진 데이터가 잘립니다.이 문은 종료되었습니다." 즉, 열이 데이터에 충분하지 않을 수도 있습니다. nvarchar (n)을 최대 값으로 변경해야합니다. –

+0

SQL Server 2008 R2를 사용하는 경우 (이 질문의 태그에서 제안한 것처럼) NVARCHAR (MAX)] (http://msdn.microsoft.com/en-us/library/ms186939.aspx) 열 [최대 2GB 허용] (http://msdn.microsoft.com/en-us/ 라이브러리/ms176089.aspx)에 저장해야합니다. – CraigTP

+0

이것은 이상한 제안입니다. 문자 데이터가 아니며 이진 데이터입니다. Nvarchar (아무것도) 그냥 잘못되었습니다. 이것에 대한 '이미지'유형 - 또는 varbinary 또는 파일 스트림이 디스크에 저장되어있는 경우. nvarchar 이외의 문자 –

답변

0

잘 함께 일하고,이 오류는 필드 (문자열 또는 이진) 중 하나의 데이터의 데이터베이스 정의보다 긴 것을 의미한다 열을 저장합니다.

예를 들어 사용자 이름 일 수 있습니다. 데이터베이스가 varchar (8)이고 10 자의 이름을 지정하려고하면이 오류가 발생합니다.

errormessage에서 오류를 일으키는 필드를 차감 할 수 없습니다. 모든 문자열 또는 바이너리 데이터가 될 수 있습니다. 오류의 원인이되는 필드/열을 찾기 위해 데이터베이스 정의로 입력을 교차시킵니다.

해결책 : 더 작은 데이터를 제공하거나 데이터베이스의 길이를 늘리십시오.

0

여기에서 문제는 이미지를 보유하고있는 열이 삽입하려는 이미지를 보유 할 정도로 크지 않다는 점입니다. 즉, 원하는 객체를 삽입하려면 길이를 늘려야합니다.

0

코드를 확인하지 않았지만 비슷한 것을 사용했음을 기억합니다.

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