操作数类型冲突:nvarchar与图像不兼容

时间:2010-03-10 21:23:33

标签: vb.net image parameters dbnull

我正在使用SQL Server 2008存储过程来创建新记录 这句语法:

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

但结果是:

Operand type clash: nvarchar is incompatible with image 

照片不是唯一的参数,但是唯一的一个图像,我没有通过 一个nvarchar但是一个空值,我错过了什么吗?

2 个答案:

答案 0 :(得分: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();

有一个伟大的,免费的,非常有用的VB.NET-to-C# converter out there - 使用它!

答案 1 :(得分:0)

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