参数varbinary数据类型中的空值

Kar*_*ski 11 c# parameters dbnull sql-server-2008 winforms

如何在参数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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下内容System.Data.SqlClient.SqlException:

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

RDe*_*per 8

我不知道为什么"DBNull.Value"对我不起作用的原因.我想出另一个解决方案可以解决这个问题.

cmd.Parameters["@Image"].Value = System.Data.SqlTypes.SqlBinary.Null;
Run Code Online (Sandbox Code Playgroud)


Rah*_*thi 5

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

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

cmd.Parameters["@Image"].Value = DBNull.Value;
Run Code Online (Sandbox Code Playgroud)


Sha*_*r K 5

尝试这个 :

mySqlCommand.Parameters.AddWithValue("@Image", new byte[]{});
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用Parameters.Add,这个答案可能更好,唯一需要注意的是,它不会插入NULL数据(在表中您会看到单词NULL),而是插入EMPTY数据(在在桌子上,你什么也看不到) (3认同)

kek*_*tek 5

sqlCommand.Parameters.AddWithValue("@image", SqlBinary.Null);
Run Code Online (Sandbox Code Playgroud)

  • 虽然这个答案可能会回答这个问题,但会添加更多细节,例如为什么以及如何工作将提高其质量 (4认同)