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

时间:2016-01-18 20:02:03

标签: c# .net ado.net

我正在尝试执行此命令但获得异常:

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

2 个答案:

答案 0 :(得分:3)

如果您想为基础数据库提供NULL,请使用DBNull.Value

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

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

答案 1 :(得分:1)

使用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));