15

如何在参数 varbinary 数据类型中添加空值?

当我执行以下代码时:

using (SqlConnection myDatabaseConnection1 = new SqlConnection(myConnectionString.ConnectionString))
{
    using (SqlCommand mySqlCommand = new SqlCommand("INSERT INTO Employee(EmpName, Image) Values(@EmpName, @Image)", myDatabaseConnection1))
    {
        mySqlCommand.Parameters.AddWithValue("@EmpName", textBoxEmpName.Text);
        mySqlCommand.Parameters.AddWithValue("@Image", DBNull.Value);
        myDatabaseConnection1.Open();
        mySqlCommand.ExecuteNonQuery();
    }
}

我得到以下信息System.Data.SqlClient.SqlException

不允许从数据类型 nvarchar 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询。

4

6 回答 6

13

我不知道为什么“DBNull.Value”对我不起作用。我想出另一种解决方案可以解决这个问题。

cmd.Parameters["@Image"].Value = System.Data.SqlTypes.SqlBinary.Null;
于 2016-05-12T03:10:12.013 回答
6
sqlCommand.Parameters.AddWithValue("@image", SqlBinary.Null);
于 2016-10-17T17:57:22.457 回答
5

你可以尝试这样的事情: -

cmd.Parameters.Add( "@Image", SqlDbType.VarBinary, -1 );

cmd.Parameters["@Image"].Value = DBNull.Value;
于 2013-08-11T10:36:01.613 回答
5

尝试这个 :

mySqlCommand.Parameters.AddWithValue("@Image", new byte[]{});
于 2015-01-15T15:26:47.977 回答
1

我这样做没有问题

SqlParameter image= new SqlParameter("@Image", SqlDbType.VarBinary, System.DBNull.Value);
mySqlCommand.Parameters.Add(image);
于 2013-08-11T10:36:48.360 回答
1

在您的存储过程中设置空值。不需要做其他任何事情。

ex. @photo varbinary(max) = null,

ALTER PROCEDURE [dbo].[InsertOurTeam]
    @name nvarchar(50),
    @Sname nvarchar(50),
    @designation nvarchar(50),
    @photo varbinary(max) = null,
    @Pname nvarchar(50)=null,
    @psize bigint=null,
    @id int output
    AS
    BEGIN

        SET NOCOUNT ON;
        insert into OurTeam values (@name,@Sname,@designation,@photo,@Pname,@psize);

        select @id= SCOPE_IDENTITY();
END
于 2018-01-27T18:54:12.780 回答