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

本文关键字:原始 SQL 插入 语句 参数 | 更新日期: 2023-09-27 18:30:49

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

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是预期的,但未提供。

实际上,我正在为其提供值。那么如何将这个非常空的插入到可空的列 2 中呢?

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

如果要提供对基础数据库的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));