Столкновение типа операнда: nvarchar является несовместимым с изображением

Я использую хранимую процедуру SQL Server 2008 года для создания новой записи с этим синтаксисом:

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

но результатом является a:

Operand type clash: nvarchar is incompatible with image 

Фотография не является единственным параметром, но является единственным изображением один, я не передаю nvarchar, но нулевое значение, я пропускаю что-то?

10
задан marc_s 10 March 2010 в 21:33
поделиться

1 ответ

Если вы передадите 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 в C # - используйте его!

14
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: