我有一个最奇怪的问题。以下大部分时间都有效,但是“偶尔”它无法返回数据,即使我已经为 adapter.fill 语句设置了一个断点,检查了参数并通过 SQL Management Studio 执行它们,它肯定会返回数据: )
所以这是一个标准的 c# SQL 客户端调用:
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.Connection = connection;
连接肯定可以正常打开并使用,因为它也正在通过另一个调用使用..实际上后续调用也可以工作..但是,在我的情况下,以下“有时”再次失败:
command.CommandText = "myprocname";
command.Parameters.AddWithValue("@param1", param1value);
command.Parameters.AddWithValue("@param2", param2value);
command.Parameters.AddWithValue("@param3", param3value);
command.Parameters.AddWithValue("@param4", param4value);
然后填充数据集:
DataSet ds = new DataSet();
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(ds);
}
command.Dispose();
所以真的没有什么奇怪的事情发生,上面的方法大部分时间都有效..有时它没有返回我所期望的,并在adapter.fill语句之前放置一个断点,检查命令文本和每个参数/values正在传递..打开sql management studio,使用这些参数运行proc,果然返回了预期的数据。
过程非常简单,而且大部分时间再次返回数据......
无论如何我都不能对proc进行故障处理,但是这让我发疯了,因为我检查了连接超时、执行时间等等。我想最疯狂的是proc名称和参数都是正确的(没有额外的参数意外通过等)..并手动运行,它返回数据..但通过填充语句似乎不是(但只是偶尔!)。
非常感谢对这种疯狂的任何帮助!