如何在参数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函数运行此查询。
答案 0 :(得分:8)
我不知道“DBNull.Value”对我不起作用的原因。 我发现另一个解决方案可以解决这个问题。
cmd.Parameters["@Image"].Value = System.Data.SqlTypes.SqlBinary.Null;
答案 1 :(得分:5)
您可以尝试这样的事情: -
cmd.Parameters.Add( "@Image", SqlDbType.VarBinary, -1 );
cmd.Parameters["@Image"].Value = DBNull.Value;
答案 2 :(得分:4)
试试这个:
mySqlCommand.Parameters.AddWithValue("@Image", new byte[]{});
答案 3 :(得分:2)
sqlCommand.Parameters.AddWithValue("@image", SqlBinary.Null);
答案 4 :(得分:1)
我这样做没有问题
SqlParameter image= new SqlParameter("@Image", SqlDbType.VarBinary, System.DBNull.Value);
mySqlCommand.Parameters.Add(image);
答案 5 :(得分:-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