nik*_*srb 2 c# sql-server executescalar visual-studio
下一个代码给了我一个例外:
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();
Run Code Online (Sandbox Code Playgroud)
我得到的例外Must declare '@StartTime' variable与相同@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
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读我们可以停止使用AddWithValue()吗?
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |