带有可选参数的原始 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));
我正在尝试执行此命令但出现异常:
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));