下一个代码给了我一个异常(exception):
cmd.CommandText = @"insert Table ";
cmd.CommandText += @"(StartTime,
EndTime)
values(@StartTime,
@EndTime)
SELECT CAST(scope_identity() AS int)";
cmd.Parameters.AddWithValue ( "@StartTime", DBNull.Value );
cmd.Parameters.AddWithValue ( "@EndTime", DBNull.Value );
cmd.ExecuteScalar();
我得到的异常是必须声明“@StartTime”变量
,@EndTime
也是如此。 DBNull.Value
不是用于这样的事情吗,我做错了什么?
最佳答案
我认为原因是您正在使用AddWithValue
。
您会看到,AddWithValue
必须从值(以及元数据,如果存在)推断参数的数据类型。当您使用 DBNull.Value 和内联 SQL(与存储过程相反)时,根本无法推断数据类型。
将 AddWithValue
更改为 Add
:
cmd.Parameters.Add("@StartTime", SqlDbType.DateTime).Value = DBNull.Value;
cmd.Parameters.Add("@EndTime", SqlDbType.DateTime).Value = DBNull.Value
有关更多信息,请阅读 Can we stop using AddWithValue() already?
关于c# - 使用 DBValue.null 将 null 值插入 DateTime 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49630387/