2010-03-10 13 views
10

와 호환되지 않습니다 :피연산자 유형 충돌 : NVARCHAR 내가 와 구문 새 레코드를 생성하기 위해 SQL 서버 2008를 저장 프로 시저를 사용하고 이미지

cmd.Parameters.Add("@photo", DBNull.Value) 
cmd.ExecuteNonQuery() 

을하지만 결과는 다음과 같습니다

Operand type clash: nvarchar is incompatible with image 

사진이 유일한 매개 변수는 아니지만 유일한 이미지입니다. 을 nvarchar하지만 null 값으로 전달하지 않습니다. 누락 된 것이 있습니까?

답변

14

DBNull.Value을 값으로 전달하면 ADO.NET에서 매개 변수의 형식을 알아낼 수 없습니다. 문자열 또는 정수 값을 지정하면 제공된 값에서 SQL 매개 변수의 유형을 파생시킬 수 있지만 어떤 유형을 DBNull.Value으로 변환해야합니까 ?? NULL 값을 전달하면

, 당신은 명시 적으로 SqlDbType 그 자신을 지정해야합니다

Dim photoParam As New SqlParameter("@photo", SqlDbType.Image) 
photoParam.Value = DBNull.Value 
cmd.Parameters.Add(photoParam) 

cmd.ExecuteNonQuery() 

일을해야 그, 내가 희망!

는 업데이트 : C#에서 같은 일이 될 것이다 :

SqlParameter photoParam = new SqlParameter("@photo", SqlDbType.Image); 
photoParam.Value = DBNull.Value; 
cmd.Parameters.Add(photoParam); 

cmd.ExecuteNonQuery(); 

A는, 무료, VB.NET-to-C# converter out there 매우 유용 큰있다 - 그것을 사용!

+0

어떻게 C#에서이 작업을 수행합니까? – Selase

+0

가 작동하지 않았습니다. varchar에서 numeric으로 변환 할 때 오류가 발생했습니다. – moldovanu

+1

C#은 또한 한 줄로 작성 될 수 있습니다 :'cmd.Parameters.Add (새 SqlParameter ("사진", SqlDbType.Image) {값 = DBNull.Value});' – Johann

0
Dim photo_NULL As New SqlTypes.SqlBytes 
.Pararameters.AddWithValue("@photo", IIf(IsNothing(Photo), photo_NULL, Photo)) 
.CommandType = CommandType.StoredProcedure 
F_return = (.ExecuteNonQuery > 0) 
+1

코드, XML 또는 데이터 샘플을 게시하는 경우 * * 텍스트 편집기에서 해당 줄을 강조 표시하고 편집기 도구 모음에서 "코드 샘플"단추 ({})를 클릭하여 멋지게 서식을 지정하고 구문을 강조 표시하십시오! –

+1

가 작동하지 않았습니다. varchar에서 numeric으로 변환 할 때 오류가 발생했습니다. – moldovanu