Я использую хранимую процедуру SQL Server 2008 года для создания новой записи с этим синтаксисом:
cmd.Parameters.Add("@photo", DBNull.Value)
cmd.ExecuteNonQuery()
но результатом является a:
Operand type clash: nvarchar is incompatible with image
Фотография не является единственным параметром, но является единственным изображением один, я не передаю nvarchar, но нулевое значение, я пропускаю что-то?
Если вы передадите 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 # - используйте его!