带有可选参数的原始 SQL 插入语句

Raw SQL insert statement with optional parameter

我正在尝试执行此命令但出现异常:

cmd.CommandText = @"insert into Foo (Column1, Column2) 
                    values (@Parameter1, @Parameter2)";

cmd.Parameters.Add(new SqlParameter("@Parameter1", 'bar'));
cmd.Parameters.Add(new SqlParameter("@Parameter2", null));

异常指出 @Parameter2 是预期的但未提供。

实际上我为它提供了 null 值。那么如何将这个非常空的值插入可为空的 Column2?

如果要向基础数据库提供NULL,请使用DBNull.Value

cmd.Parameters.Add("@Parameter2", SqlDbType.Int).Value = DBNull.Value;

适应你的参数真正的数据类型(我只是猜测,因为你没有告诉我们 - 我更喜欢 总是 明确告诉参数什么数据类型它是)

使用DBNull.Value向数据库表示一个null值:

cmd.CommandText = @"insert into Foo (Column1, Column2) 
                    values (@Parameter1, @Parameter2)";

cmd.Parameters.Add(new SqlParameter("@Parameter1", 'bar'));
cmd.Parameters.Add(new SqlParameter("@Parameter2", DBNull.Value));