SQL命令的原因不明的异常

时间:2017-01-07 17:05:43

标签: c# asp.net sql-server

我有一个在IIS下运行的REST Web服务,并且从特定的SQL命令中抛出奇怪的异常。

查询

insert into locations (lat, lon, dt, owner) 
values ('30', '-5', '20170107 16:40:17', 1)

工作正常,但是这个

update locations 
set dt = '20170107 16:37:18' 
where id = 12817

总是抛出异常

  

索引(从零开始)必须大于或等于零且小于参数列表的大小。

id是主键。两个命令都使用相同的代码结构发送:

query = string.Format(result = string.Format("Time updated for {0} at {2}", loc.Owner, DateTime.Now););

try
{
    using (System.Data.SqlClient.SqlCommand command = new SqlCommand(query, mapConnection))
    {
        successRows = command.ExecuteNonQuery();
    }
    .....
}
catch (Exception ex)
{
    ....
}
finally
{
    ....
    mapConnection.Close(); 
}

如果我使用SQL Server企业管理器将相同的命令直接发送到服务器,则命令按预期完成且没有错误。那么asp.net抱怨什么?

1 个答案:

答案 0 :(得分:0)

看看你的string.format。您没有足够的物品进入其中:

string.Format("Time updated for {0} at {2}", loc.Owner, DateTime.Now)

您拥有{0}和{2}的职位。你没有列出{1},但它暗示了。所以现在格式是期望传入3个项目,而你只传递两个。将格式更改为:

string.Format("Time updated for {0} at {1}", loc.Owner, DateTime.Now)