2009-07-03 50 views
0

我有一个TableAdapter从stored procedure中获取行。出于某种原因,当没有结果时,TableAdapter返回值为0而不是NULL的INT。存储过程有NOCOUNT ONTableAdapter返回ASP.NET中的幻像结果

与此问题是,我有一个ListView在前端EmptyDataTemplate,它不显示。当我在查询分析器中运行查询时,发现它返回0而不是NULL。

存储过程有一个简单的'SELECT * FROM WHERE'和一个INT参数(NOT输出)。在查询分析器中运行它,我没有得到预期的输出。

发生了什么事?

回答

1

它看起来像存储过程返回结果。所有存储过程都会返回结果代码。这很可能是这个。

+0

其实,我已经证实情况并非如此。在查询分析器中运行查询并没有返回任何结果,同样,运行其他未在数据集设计器中产生任何结果的SP也没有导致这种幻影结果。 – 2009-07-04 07:29:56

1

检查查询的tableAdapter的ExcuteMode属性。确保它被设置为“Reader”。有3个选项ExecuteMode:

  1. 阅读器 - 返回数据
  2. 标量的行 - 返回一个值
  3. NonQuery - 返回一个int与受影响

另外,还要检查参数的行数收集返回值参数。它应该有适当的AllowDBNull(如果允许为空,则为true),方向(ReturnValue)。这个参数应该保存你的SP的结果。在你的例子中,它将是空的,因为没有记录返回。