0

我有一个最奇怪的问题。以下大部分时间都有效,但是“偶尔”它无法返回数据,即使我已经为 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名称和参数都是正确的(没有额外的参数意外通过等)..并手动运行,它返回数据..但通过填充语句似乎不是(但只是偶尔!)。

非常感谢对这种疯狂的任何帮助!

4

1 回答 1

0

解决:好吧好吧..最奇怪的错误,一个真正让我失望的错误。

在发布这个问题时我没有提到,我正在使用 RDLC/Reportviewer 控件在一组仪表板图表中显示数据.. 即您可以选择一个图表段(例如饼图切片)来深入研究该数据..图表数据是“预先分组的”,即这些图表的过程不包含详细信息,以便快速显示仪表板..

无论如何,我离题了,因为我有一些“坏数据”.. 有空日期的好数据,而短篇故事版本是 reportview 图表中的分组以某种方式导致所选数据“有时”不正确.. 如传递的参数看起来/看起来不错,但有时它们不是..

所以最终结果是(无论如何我已经计划好了)是在我的过程中添加检查“日期不为空”等。但是用“使用”语句包装命令对象等也没有害处!非常感谢所有的回复!

于 2013-02-26T10:58:30.553 回答