我有一个在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抱怨什么?
答案 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)